根据 Google Chrome 最近的更新,它只允许具有属性的跨平台 cookie
sameSite=None
链接:https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite#net-versions-earlier-than-472
根据上图,Microsoft 不为低于 4.7.2 的版本提供此属性的内置支持。
因此,我们无法在服务器端创建 cookie 时设置它。
有什么可能的方法可以使用 SameSite 属性创建 cookie?
最佳答案
更新:
假设你已经安装了 IIS 的 URL Rewrite Extension 2.0(Azure App Services,nee Azure Websites,已经安装了)then you should look at @sreenath's answer因为该解决方案应该适用于大多数用户。
但是(在我的象牙塔内,我在一个巨大的自负泡沫中处于特权地位)没有任何项目没有使用 .NET Framework 4.7.2 或更高版本,因为 .NET Framework 在过去 5 年多的时间里更新(Visual Studio 2013 年以后)在很大程度上是附加的和向后兼容的。 所以我强烈敦促开发人员(尝试)首先将他们的项目更新到 .NET Framework 4.7.2 或 4.8 在尝试使用 IIS 重写来设置 SameSite
之类的黑客之前cookie 参数。
我的原答案:
How to set cookie attribute Samesite = None for .Net Framework earlier of 4.7.2 (for 4.5.2)
简单地说:你不能。
The article you linked to解释原因(强调我的):
Microsoft does not support .NET versions lower that 4.7.2 for writing the same-site cookie attribute. We have not found a reliable way to:
- Ensure the attribute is written correctly based on browser version.
- Intercept and adjust authentication and session cookies on older framework versions
唯一的解决方案是将您的项目升级到 .NET Framework 4.7.2 或更高版本。
但好消息是,从 .NET Framework 4.5 升级到 4.7.2 很容易,向后兼容性问题极少(如果有的话)。您甚至无需更改
web.config
中的任何内容文件(即您仍然可以将 ASP.NET WebForms 4.5 与 .NET Framework 4.8 一起使用)。您需要做的就是:
.csproj
记事本中的文件。 <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
至 <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
根据我的经验,您将遇到的唯一问题是:
packages
目录)。 当然,我仍然会责备你们的产品经理没有确保他们的项目在 中保持正常工作状态。七年 (因为 .NET Framework 4.5.2 于 2013 年发布)。为什么没有设置 CI 管道来自动处理这个问题?
关于c# - 如何为 4.7.2 之前的 .Net Framework 设置 cookie 属性 Samesite = None(对于 4.5.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63793828/