即使指定了 samesite=none,浏览器也会使用 samesite=lax
Browser uses samesite=lax even if samesite=none is specified
我正在尝试通过 iframe 将我的 angular 应用程序嵌入到另一个站点。在我的 angular 应用程序中,我正在设置 cookie,因此当我尝试将 angular 应用程序嵌入到我的其他站点时,Devtools 显示了一个问题,告诉我 samesite=none 不是t 设置以便使用默认的 samesite=lax,这会阻止 angular 应用程序设置 cookie。
之后我尝试在响应头中设置条目“set-cookie: samesite=none; secure”,但没有成功。正如您在下面的屏幕截图中看到的,浏览器仍然使用“same-site=lax”。
此问题发生在 Chrome 和 Edge(Chromium) 上,但不会发生在 Firefox 上。
问题:
- 我想知道我是否错误地使用了同站点设置?
- 尽管我使用“samesite=none;secure”,为什么浏览器会向我显示此消息?
截图:
问题
您误解了 Set-Cookie
的语法,并且错误地省略了 cookie 的名称和值。查看 the MDN page on the topic:
A cookie definition begins with a name-value pair.
因此,当浏览器收到带有以下内容的响应时 header,
set-cookie: samesite=none; secure
它创建(或更新)一个 Secure
cookie,其 name 是 samesite
,value 是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
我正在尝试通过 iframe 将我的 angular 应用程序嵌入到另一个站点。在我的 angular 应用程序中,我正在设置 cookie,因此当我尝试将 angular 应用程序嵌入到我的其他站点时,Devtools 显示了一个问题,告诉我 samesite=none 不是t 设置以便使用默认的 samesite=lax,这会阻止 angular 应用程序设置 cookie。
之后我尝试在响应头中设置条目“set-cookie: samesite=none; secure”,但没有成功。正如您在下面的屏幕截图中看到的,浏览器仍然使用“same-site=lax”。
此问题发生在 Chrome 和 Edge(Chromium) 上,但不会发生在 Firefox 上。
问题:
- 我想知道我是否错误地使用了同站点设置?
- 尽管我使用“samesite=none;secure”,为什么浏览器会向我显示此消息?
截图:
问题
您误解了 Set-Cookie
的语法,并且错误地省略了 cookie 的名称和值。查看 the MDN page on the topic:
A cookie definition begins with a name-value pair.
因此,当浏览器收到带有以下内容的响应时 header,
set-cookie: samesite=none; secure
它创建(或更新)一个 Secure
cookie,其 name 是 samesite
,value 是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