我有一个ASP.NET Web应用程序,该应用程序需要在另一个站点的iframe中打开,即它应支持跨站点cookie。我想设置 SameSite = None;在网络应用程序中安全。我放
<httpCookies sameSite="None" requireSSL="true" />
Web.config中的,但Cookie ASP.NET_SessionId 中的 SameSite 值始终为 Lax 。我在web.config中进行正确的配置吗?
答案 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对象并解决了问题。