我有一个 ASP.NET Web 应用程序,该应用程序需要在另一个站点的 iframe 中打开,即它应该支持跨站点 cookie。我想设置SameSite=None; 在 Web 应用程序中安全。我放
<httpCookies sameSite="None" requireSSL="true" />
在 Web.config 但cookie ASP.NET_SessionId中的SameSite值始终为Lax。我在 web.config 中进行了正确的配置吗?
Web.config 中的<httpCookies sameSite="...">
属性不影响 ASP.NET_SessionId cookie。改为设置<sessionState cookieSameSite="...">
属性:
<system.web>
<sessionState cookieSameSite="None" />
</system.web>
您不需要在Session_Start中处理Response对象的cookie吗?每次新会话开始时... Cookie NOT YET 不可用。
您可以使用
Request.Cookies[ASP.Net_SessionId"]
反而。我解决了 Request 对象并解决了问题。
在Global.asax中编写以下代码后,我可以将SameSite值设置为None。
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>