根据 Google Chrome 的最新更新,它只允许具有属性的跨平台 cookie
sameSite=None
Link: https://learn.microsoft.com/en-us/aspnet/samesite/system-web-samesite#net-versions-earlier-than-472 https://learn.microsoft.com/en-us/aspnet/samesite/system-web-samesite#net-versions-earlier-than-472
如上图所示,Microsoft 不为 4.7.2 以下的版本提供对此属性的内置支持。
所以,我们无法在服务器端创建cookie时设置它。
我们有什么可能的方法可以使用 SameSite 属性创建 cookie 吗?
UPDATE:
假设您安装了 IIS 的 URL 重写扩展 2.0(Azure 应用服务、需要 Azure 网站,已经安装了)那你应该看看@sreenath的答案 https://stackoverflow.com/a/63918217/159145因为该解决方案应该适用于大多数用户。
然而 (在我的象牙塔内的特权位置,在一个巨大的自负泡沫中) 没有任何借口任何项目尚未使用 .NET Framework 4.7.2 或更高版本,因为过去 5 年多的 .NET Framework 更新(Visual Studio 2013 及以后)在很大程度上是附加的和向后兼容的。因此,我强烈敦促开发人员(尝试)首先将他们的项目更新到 .NET Framework 4.7.2 或 4.8在尝试使用 IIS Rewrite 等黑客方法之前SameSite
cookie 参数。
我原来的答案:
如何为 4.7.2 之前的 .Net Framework 设置 cookie 属性 Samesite = None(对于 4.5.2)
简而言之:你不能。
您链接到的文章 https://learn.microsoft.com/en-us/aspnet/samesite/system-web-samesite#net-versions-earlier-than-472解释原因(强调我的):
Microsoft 不支持低于 4.7.2 的 .NET 版本用于写入同站点 cookie 属性。我们有not找到了一种可靠的方法:
- 确保根据浏览器版本正确写入属性。
- 拦截并调整旧框架版本上的身份验证和会话 cookie
唯一的解决方案是将项目升级到 .NET Framework 4.7.2 或更高版本。
但好消息是,从 .NET Framework 4.5 升级到 4.7.2 很容易,向后兼容性问题(如果有的话)也很少。你甚至不需要改变你的任何东西web.config
文件(即您仍然可以将 ASP.NET WebForms 4.5 与 .NET Framework 4.8 一起使用)。
您需要做的就是:
- 进行新的 git 提交。
- 打开你的
.csproj
记事本中的文件。
- Change
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
to <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
- Save.
- 在 Visual Studio 中重新打开您的项目/解决方案,然后单击“重建”。
根据我的经验,您会遇到的唯一问题是:
- 需要刷新/重新安装 NuGet 包,因为 NuGet 确实无法轻松处理目标框架更改。这很容易解决(只需核爆你的
packages
目录)。
- 非 NuGet 依赖项(例如老式的 WinForms 组件,嗯)具有特殊的安装步骤,由于某种原因,这些步骤对特定的 .NET Framework 版本有严格的依赖 - 在这种情况下,如果您的组件供应商不这样做,我会感到非常惊讶没有更新。
当然我还是会骂你们产品经理因为无法确保他们的项目保持正常运转7年(.NET Framework 4.5.2 于 2013 年发布)。为什么没有 CI 管道设置来自动处理这个问题?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)