【问题标题】:Setting cookie in iframe - different Domain在 iframe 中设置 cookie - 不同的域
【发布时间】:2011-01-08 04:52:53
【问题描述】:

我们将我们的网站作为 iframe 集成到另一个在不同域上运行的网站中。我们似乎无法设置cookies。有没有人遇到过这个问题?有什么想法吗?

【问题讨论】:

标签: security iframe cookies


【解决方案1】:

由于您的内容是从远程域加载到 iframe 中的,因此它被归类为第三方 cookie。

绝大多数第三方 cookie 由广告商提供(这些通常被反恶意软件标记为跟踪 cookie),许多人认为它们侵犯了隐私。因此,大多数浏览器都提供了阻止第三方 cookie 的功能,这可能是您遇到问题的原因。

【讨论】:

  • 如果您可以控制用户的浏览器设置,您可以通过让他们将第三方站点添加为“受信任站点”(至少对于 Windows)来解决 cookie 问题。受信任站点的默认安全设置应允许第三方 cookie。
【解决方案2】:

从 2020 年 2 月 4 日的 Chromium 新更新(Chrome 80)开始。 Cookie 默认为 SameSite=Lax。据此link.

要解决此问题,您只需将 cookie 标记为 SameSite=None 和 Secure。

要了解什么是 Samesite cookie,请参阅document

【讨论】:

【解决方案3】:

在阅读了 Facebook 在 iframe 画布页面上的文档后,我想出了如何在具有不同域的 iframe 中设置 cookie。我在这里创建了一个概念验证 sinatra 应用程序:https://github.com/agibralter/iframe-widget-test

这里有更多关于 Facebook 如何做到这一点的讨论:How does Facebook set cross-domain cookies for iFrames on canvas pages?

【讨论】:

    【解决方案4】:

    在默认隐私设置下,IE 要求您先set a P3P policy,然后才能允许第三方框架设置 cookie。

    据推测,P3P 允许用户限制将哪些信息传递给承诺以某种方式处理它的各方。在实践中,它几乎毫无价值,因为用户无法真正对他们想要的信息处理方式设置任何有意义的限制;最后,这只是一个相当统一的设置,充当了所有第三方都必须跳过的圈子,即使他们无意这样做,也会说“我会很好地处理你的个人信息”。

    【讨论】:

    • 为了在所有浏览器中工作,您需要 P3P + 我在回答中概述的策略。
    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2013-04-08
    • 2011-11-01
    • 2015-02-07
    • 2020-07-19
    • 2023-03-25
    相关资源
    最近更新 更多