升级到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