ASP.NET_SessionId cookie值始终在SameSite中不严格

时间:2020-01-28 16:53:51

标签: asp.net samesite

我有一个ASP.NET Web应用程序,该应用程序需要在另一个站点的iframe中打开,即它应支持跨站点cookie。我想设置 SameSite = None;在网络应用程序中安全。我放

<httpCookies sameSite="None" requireSSL="true" /> 
Web.config中的

,但Cookie ASP.NET_SessionId 中的 SameSite 值始终为 Lax 。我在web.config中进行正确的配置吗?

3 个答案:

答案 0 :(得分:2)

Web.config中的<httpCookies sameSite="...">属性不会影响ASP.NET_SessionId cookie。改为设置<sessionState cookieSameSite="...">属性:

<system.web>
    <sessionState cookieSameSite="None" />
</system.web>

答案 1 :(得分:0)

Global.asax 中编写以下代码后,我可以将 SameSite 的值设置为

        protected void Session_Start(object sender, EventArgs e)
        {
            Response.Cookies["ASP.NET_SessionId"].SameSite = SameSiteMode.None;
            //while we're at it lets also make it secure
            if (Request.IsSecureConnection)
                Response.Cookies["ASP.NET_SessionId"].Secure = true;
        }

实现此目标的另一种方法是在web.config文件中。

<system.web>
        <httpCookies requireSSL="true"/>
        <sessionState cookieSameSite="None"/>
</system.web>

答案 2 :(得分:0)

您是否不需要在 Session_Start 中处理 Response 对象的cookie? 每次 new 会话开始... Cookie尚不可用。

您可以使用

Request.Cookies[ASP.Net_SessionId"]

相反。我解决了Request对象并解决了问题。