如何将SameSite Cookie属性设置为显式ASP ASP.NET Core

时间:2019-05-09 20:08:12

标签: c# asp.net asp.net-core

Chrome 76将开始支持显式的SameSite: None属性

https://web.dev/samesite-cookies-explained/

我发现ASP.NET Core的当前实现将SameSiteMode.None视为无操作,并且不发送任何属性。如何为Cookie添加自定义属性,从而为Cookie文本添加显式SameSite: None

将属性附加到cookie值不能像HttpResponse.Cookies.Append url那样对cookie值进行编码。

5 个答案:

答案 0 :(得分:2)

与ASP.NET Core中的ASP.NET中发生相同的问题。

在Microsoft提供修复程序之前,对我有用的黑客程序将取代

subdomain.example.com

使用

myCookie.Path = "/";
myCookie.SameSite = SameSiteMode.None;     // has no effect

这会将myCookie.Path = "/; SameSite=None"; 添加到HTTP响应的SameSite=None标头中。

答案 1 :(得分:2)

现在已在所有版本的.NET Framework和.NET Core(https://github.com/aspnet/AspNetCore/issues/12125)的最新版本中修复

我有多个项目在.NET Core 2.2上运行,并且升级到2.2.207之后,我不再遇到问题了。

以下是ConfigureServices文件的Startup.cs方法中存在的示例代码

services.ConfigureApplicationCookie(options => {
     options.Cookie.SameSite = SameSiteMode.None;
);

答案 2 :(得分:1)

response.Headers.Append("set-Cookie", $"{cookieName}={cookieValue}; path=/; SameSite=None; Secure");似乎可以正常工作。

我通过在Chrome Dev 76中启用same-site-by-default-cookiescookies-without-same-site-must-be-secure对此进行了测试

答案 3 :(得分:0)

自Microsoft在2019年12月10日提交最后一个知识库之后, 它应该在.net framework和dotnetcore中修复。

请参阅:

  1. https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite
  2. https://docs.microsoft.com/en-us/aspnet/samesite/kbs-samesite

答案 4 :(得分:0)

其他答案都提到了.Net Core修复程序,因此我跳过了这一部分。

.Net Framework修补程序通过“质量汇总”提供。

Here是.Net 4.8的知识库。

Here是.Net 4.7.2的知识库。

Here是相关的MSDN来源。