【问题标题】:Browser blocks cross domain iframe cookies浏览器阻止跨域 iframe cookie
【发布时间】:2020-10-27 03:38:54
【问题描述】:

我有一个类似论坛的组件,我在其他网站的 iframe 中使用它。该组件使用 django-allauth 对 Facebook 和 Twitter 进行身份验证。一切正常,但现在身份验证在一段时间前停止工作。当我在浏览器中查看 cookie 时,没有加载 iframe 设置的来自 Facebook/Twitter 的 cookie。虽然,来自组件本身的 cookie 已设置。 当我在组件本身的另一个子域上的网站上加载 iframe 时,身份验证仍然有效。

另一个子域上的工具(工作): https://shop-sandbox.adbuddy.be/discussie/

完全不同域上的工具(不起作用): https://mama-calinka.webbuddy.be/discussie/

我猜这个问题与 CORS 标头有关,但我尝试过的没有任何帮助。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: django cookies iframe django-allauth


    【解决方案1】:

    如果这只是最近才停止工作,它可能与 Chrome 最近的 breaking change 相关,如果 cookie 的属性 SameSite 未明确设置,则默认为 SameSite = Lax,这会阻止您的浏览器在跨站点请求中发送饼干结束了。

    我检查了你的https://shop-sandbox.adbuddy.be/discussie/ - 有很多 cookie 的 SameSite 为空。

    可能还有更多原因,为什么浏览器会忽略请求中的 cookie,我试图在我的博客 here 中总结所有这些原因

    【讨论】:

    • 非常感谢!这确实是问题所在。对于其他 Django 用户,您必须将您的 Django 版本更新到至少 3.1 并在您的 settings.py 文件集 CSRF_COOKIE_SAMESITE = 'None' CSRF_COOKIE_SECURE = True CSRF_COOKIE_HTTPONLY = True SESSION_COOKIE_SAMESITE = 'None' SESSION_COOKIE_SECURE = True SESSION_COOKIE_HTTPONLY = True
    猜你喜欢
    • 2021-10-25
    • 2015-01-28
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多