"SameSite=none"不适用于 iframe



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

打开"显示过滤掉的请求cookie"选项后,我看到我的cookie标记为"由于用户偏好,此cookie未发送。">

cookie集的标头:

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的第三方域,cookie将不起作用。

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

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

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

如果您将iframe与https一起使用,请sanbox您的iframe以使cookie正常工作:

referrerpolicy="strict-origin-when-cross-origin"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation"
allow="encrypted-media; fullscreen; oversized-images; picture-in-picture; sync-xhr; geolocation;"
allowpaymentrequest="true"
allowpopups
allowfullscreen

不确定你还需要什么。

而且你也需要或不需要你在iframe中的服务来设置带有额外参数的cookie

Path=/; HttpOnly; Secure; SameSite=none

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

session_set_kokie_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"/>

取消选择chrome://settings/content/cookies上阻止第三方cookie

最新更新