即使指定了 samesite=none,浏览器也会使用 samesite=lax
Posted
技术标签:
【中文标题】即使指定了 samesite=none,浏览器也会使用 samesite=lax【英文标题】:Browser uses samesite=lax even if samesite=none is specified 【发布时间】:2022-01-04 09:29:06 【问题描述】:我正在尝试通过 iframe 将我的 Angular 应用程序嵌入到另一个站点。在我的 Angular 应用程序中,我正在设置 cookie,因此当我尝试将 Angular 应用程序嵌入到我的其他站点时,Devtools 显示一个问题,它告诉我,未设置 samesite=none,因此正在使用默认的 samesite=lax,这会阻止 Angular 应用程序设置 cookie。
之后我尝试在响应标头中设置条目“set-cookie:samesite=none;secure”,但没有成功。正如您在下面的屏幕截图中看到的,浏览器仍然使用“same-site=lax”。
此问题发生在 Chrome 和 Edge(Chromium) 上,但不在 Firefox 上。
问题:
我想知道我是否错误地使用了同站点设置? 尽管我使用“samesite=none;secure”,但为什么浏览器会显示此消息?截图:
【问题讨论】:
【参考方案1】:问题
您误解了Set-Cookie
的语法,并且错误地省略了cookie 的名称和值。查看the MDN page on the topic:
cookie 定义以名称-值对开头。
相应地,当浏览器收到带有以下标头的响应时,
set-cookie: samesite=none; secure
它创建(或更新)一个Secure
cookie,其name 为samesite
,其值 为none
。因为没有指定SameSite
属性,并且因为Chromium now defaults to Lax
for the SameSite
attribute,所以生成的cookie 会被您的浏览器有效地标记为SameSite=Lax
。
解决方案
要解决此问题,您必须为 cookie 选择名称和值,并且必须在任何其他 cookie 属性之前指定 cookie 的名称和值:
Set-Cookie: <cookie-name>=<cookie-value>; SameSite=None; Secure
【讨论】:
以上是关于即使指定了 samesite=none,浏览器也会使用 samesite=lax的主要内容,如果未能解决你的问题,请参考以下文章
SameSite=None w/ IE11 中的安全中断 iFrame
即使设置了 sameSite:'none' 和 secure: true 对于 MERN 堆栈 Web 应用程序,Cookie 也不会保存在 chrome 中
SameSite=None .htaccess 正则表达式问题