0

我正在尝试通过 iframe 将我的 Angular 应用程序嵌入到另一个站点。在我的 Angular 应用程序中,我正在设置 cookie,因此当我尝试将 Angular 应用程序嵌入到我的其他站点时,Devtools 显示了一个问题,告诉我,未设置 samesite=none,因此正在使用默认的 samesite=lax,这可以防止 Angular 应用程序设置 cookie。

之后我尝试在响应标题中设置条目“set-cookie:samesite = none;安全”,但它没有用。正如您在下面的屏幕截图中看到的,浏览器仍然使用“same-site=lax”。

此问题发生在 Chrome 和 Edge(Chromium) 上,但不在 Firefox 上。

问题:

  • 我想知道我是否错误地使用了同一站点设置?
  • 尽管我使用“samesite=none;secure”,但为什么浏览器会显示此消息?

截图

在此处输入图像描述

4

1 回答 1

1

问题

您误解了Set-Cookie的语法,并且错误地省略了 cookie 的名称和值。查看有关该主题的 MDN 页面

cookie 定义以名称-值对开始。

因此,当浏览器收到带有以下标头的响应时,

set-cookie: samesite=none; secure

它创建(或更新)一个名称为的Securecookie,其值为. 由于未指定属性,并且Chromium 现在默认属性,因此生成的 cookie 会被您的浏览器有效地标记。samesitenoneSameSite LaxSameSiteSameSite=Lax

解决方案

要解决此问题,您必须为 cookie 选择名称和值,并且必须在任何其他 cookie 属性之前指定 cookie 的名称和值:

Set-Cookie: <cookie-name>=<cookie-value>; SameSite=None; Secure
于 2021-11-27T15:34:04.553 回答