gpt4 book ai didi

asp.net - SameSite None 未在 Azure Web App 中设置 cookie 属性

转载 作者:行者123 更新时间:2023-12-03 18:34:40 24 4
gpt4 key购买 nike

为了准备 Chrome 80 中 SameSite 即将发生的更改,我已将 .NET Framework API 从 4.6.2 升级到 4.7.2

我创建了一个简单的测试端点,它只需使用 SameSite=None 设置 cookie:

public class TestController : ApiController
{
public IHttpActionResult Get()
{
var cookie = new HttpCookie("foo", "bar")
{
HttpOnly = true,
Secure = true,
SameSite = SameSiteMode.None
};

HttpContext.Current.Response.SetCookie(cookie);

return Ok();
}
}

这在本地按预期工作,并返回以下 header :

set-cookie: foo=bar;路径=/;安全的;仅 Http; SameSite=无

但是,当发布到配置为 4.7 作为运行时堆栈的 Azure Web 应用时,这不起作用。 Web 应用程序返回不带 SameSite 的 cookie header :

设置 Cookie: foo=bar;路径=/;安全的;仅Http

如果我将其设置为 StrictLax,它在 Azure 中也能按预期工作。

这是 Azure 的问题吗?是否需要在网络应用程序上配置任何内容才能使其正常工作,或者我可能必须以不同的方式设置 cookie?

最佳答案

来自https://stackoverflow.com/a/38957177/1322009 。一种也适用于 4.6.1 的解决方案是将以下内容添加到您的 web.config

编辑:Chrome 现在希望您在使用 SameSite=none 时在 Cookie 中包含 secure;

<system.webServer>
<rewrite>
<outboundRules>
<clear />
<rule name="Add SameSite" preCondition="No SameSite">
<match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
<action type="Rewrite" value="{R:0}; secure; SameSite=none" />
<conditions>
</conditions>
</rule>
<preConditions>
<preCondition name="No SameSite">
<add input="{RESPONSE_Set_Cookie}" pattern="." />
<add input="{RESPONSE_Set_Cookie}" pattern="; secure; SameSite=none" negate="true" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>

这假设您在托管自己的 iis 站点时安装了 url 重写。 https://www.iis.net/downloads/microsoft/url-rewrite

关于asp.net - SameSite None 未在 Azure Web App 中设置 cookie 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59731612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com