"SameSite=none" 不适用于 iframe

"SameSite=none" does not work with iframe

升级到 Chrome 版本 80.0.3987.132 后,cookie 不会发送到 iframe 请求。在“网络”选项卡(Chrome 开发工具)上,我没有看到我的请求的 cookie。

打开选项 "show filtered out requests cookies" 后,我看到我的 cookie 标记为 "This cookies was not sent due to user preferences."

cookie 集的header:

set-cookie: token=jf23HaUI91Bd8L1chHq; expires=Wed, 18-Mar-2020 16:01:59 GMT; Max-Age=1799; path=/; SameSite=None; secure; domain=.example-domain.com; HttpOnly

当我在同一域上打开 iframe 时一切正常,但如果它是通过 http 或 https 的 third-party 域,cookie 将不起作用。

有没有人遇到过这个问题或知道如何解决这个问题?

chrome://settings/content/cookies

上取消选择 阻止第三方 cookies

它对我有用,通过 PHP 设置 cookie; 这是 php < 7.3 (!)

的 HACK

session_set_cookie_params(3600*24, '/;SameSite=None', $_SERVER['HTTP_HOST'], true);

(secure = true 很重要)

如果在 IIS 中托管,您可以在 web.config 中添加以下配置以避免浏览器添加 SameSite=Lex

<sessionState mode="InProc" **cookieless="UseCookies" cookieSameSite="None"** timeout="20"/>

我认为您应该确保这些 cookie 的 SameSite 标志始终设置为 None。如果它最初设置为 Lax,然后您尝试将其设置为 None,它可能无法正常工作。

此外,您应该确保 SameSite=None cookies 的 Secure 标志始终设置为 true。