在 Google Chrome 控制台中,我收到此警告“在“URL”处设置了与跨站点资源关联的 cookie,但未设置该SameSite
属性”。SameSite=None
它已被阻止,因为 Chrome 现在仅在使用和设置时才提供带有跨站点请求的 cookie Secure
。我在 Application>Storage>Cookies 下验证了相同的内容,我发现 Same Site 是“空白/空”,我想将其更新为“None”。
尝试了其他开发人员提到的一些方法,但似乎没有什么对我有用。
实施 1:用下面提到的代码更新了我的 web.config
<sessionState cookieSameSite="None" />
<httpCookies httpOnlyCookies="true" requireSSL="true" />
//sameSite="None" 在 httpCookies 部分下不适合我,并给我一个错误消息 sameSite 属性是不允许的
实现 2:修改了我创建 Cookie 的类文件代码
HttpCookie sessionCookie = new HttpCookie("Token");
sessionCookie.Value = sessionToken;
sessionCookie.HttpOnly = true;
sessionCookie.SameSite = SameSiteMode.None;
sessionCookie.Secure = FormsAuthentication.RequireSSL && Request.IsSecureConnection;
sessionCookie.Domain = Request.Url.Host;
Response.Cookies.Add(sessionCookie);
实现 3:创建一个单独的 MVC 过滤器来处理这个
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var response = filterContext.RequestContext.HttpContext.Response;
if (response != null)
{
response.AddHeader("Set-Cookie", "HttpOnly;Secure;SameSite=None");
}
base.OnActionExecuting(filterContext);
}
实施4:
<rewrite>
<outboundRules>
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; SameSite=None" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
目标 .net 框架 4.7.2
我需要在本地机器或服务器上做些什么,或者无论如何我可以删除此警告消息。