我们将我们的网站作为iframe集成到另一个在不同域上运行的网站。似乎我们无法设置cookie。以前有人遇到过这个问题吗?有什么想法吗?
答案 0 :(得分:22)
由于您的内容正在从远程域加载到iframe中,因此它被归类为第三方Cookie 。
绝大多数第三方Cookie由广告商提供(这些通常被反恶意软件软件标记为跟踪Cookie ),许多人认为这些是侵犯隐私的行为。因此,大多数浏览器都提供了阻止第三方cookie的工具,这可能是您遇到问题的原因。
答案 1 :(得分:9)
IE要求您set a P3P policy允许第三方框架设置Cookie。
据推测,P3P允许用户将哪些信息限制在承诺以某种方式处理它的各方。在实践中,它几乎毫无价值,因为用户无法真正对他们希望如何处理信息设置任何有意义的限制;最后,它只是一个相当统一的环境,作为一个所有第三方都必须跳过的箍,说“我会很好地处理你的个人信息”,即使他们无意这样做。
答案 2 :(得分:9)
通过浏览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?
答案 3 :(得分:8)
摘自2020年2月4日(铬80)的Chromium的新更新。 Cookies默认为SameSite = Lax。根据{{3}}。
要解决此问题,您只需将Cookie标记为SameSite = None和Secure。
要了解什么是Samesite cookie,请参阅此link