【发布时间】:2020-10-09 21:41:57
【问题描述】:
我已经使用 .NET 4.7.2 的 ASP MVC 使用以下代码在服务器端设置 cookie:
ClientCookie = new HttpCookie("SuperCookie");
ClientCookie.Value = dbNewCustomerCookie.CustomerCookieID.ToString(); // new inserted DB value
ClientCookie.Expires = DateTime.Now.AddYears(2);
ClientCookie.HttpOnly = true;
ClientCookie.Secure = true;
ClientCookie.Shareable = true;
ClientCookie.SameSite = SameSiteMode.None;
Response.SetCookie(ClientCookie);
Response.Flush();
虽然在 localhost 上工作正常并且 SameSite 设置为 None,但在将其推送到服务器后,SameSite 标志在每次请求后都会取消设置。本地主机和服务器版本都通过 HTTPS 运行。检查服务器上的 .NET 版本,已删除要重新创建的 cookie,尝试在服务器上使用不同的 web.config 设置,还尝试使用 URL 重写模块,但没有任何效果。
这可能是代码问题还是服务器/主机问题?我们正在使用 Amazon(可以访问 IIS 的私有服务器)来托管我们的网站。
更新:在服务器 localhost 上运行站点始终将 SameSite 返回为空,而开发机器始终返回 SameSite 设置为 None。两台机器都安装了 .NET 4.7.2,在 IIS 7 上使用相同的 web.config 运行。
更新 2:如果我设置 ClientCookie.SameSite = SameSiteMode.Lax 那么它也适用于服务器请求;但无法将模式设置为 SameSiteMode.None。在 Lax 模式下,不会为跨站点请求创建 cookie,这是必需的,因为我从 iframe 调用网站。
更新 3:我认为这是因为服务器没有更新支持相同站点的最新功能,因为没有:https://docs.microsoft.com/en-us/aspnet/samesite/kbs-samesite,因为公司不会更新服务器(内部政策)我会尝试从客户端设置cookie
【问题讨论】:
标签: asp.net-mvc cookies samesite