safari不允许在iframe中使用跨域cookie

时间:2015-09-22 10:00:42

标签: p3p

IE& Safari浏览器阻止iframe中的跨域cookie。

e.g。 我有两个网站,假设他们是example.comanotherexample.net

example.com上,我有一页http://example.com/someform.asp,在此页面中我使用的是Cookie。当我直接在浏览器中打开http://example.com/someform.asp时,它运行正常。

anotherexample.net上,我有页面http://anotherexample.net/page.asp,此页面包含IFRAME SRC="http://example.com/someform.asp"。现在,当我们在浏览器中打开http://anotherexample.net/page.asp页面时,example.com的Cookie不会保存。在Firefox和Chrome中,此问题不会出现。

我发现使用p3p策略我们可以修复此问题,但是在IIS响应头中设置了p3p策略之后,它仅适用于IE。

P3P : CP="This is  a P3P policy! See  http://www.workplaceanswers.com/privacy-and-terms/"

但是,我仍然在safari中遇到同样的错误。我已尝试使用不同的p3p策略值,如下所示,但无法修复它。

P3P : CP="CUR ADM DEV HIS TEL STA STP COM”
P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT”
P3P:CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA”

有什么方法可以让它在Safari中运行吗?

3 个答案:

答案 0 :(得分:1)

Vitaliy Ryepnoy 在github上发布了一个解决方案:https://github.com/vitr/safari-cookie-in-iframe

要点: 在主窗口(example.com)中,您应检测浏览器是否为safari,如果是,则将用户重定向到iframe.com/fix_safari.html,您可以在其中设置Cookie并再次重定向到example.com

然后,safari让你在iframe中设置一个cookie,因为iframe.com已经存在一个cookie

经过数小时的挫折后,

为我工作了

github页面中的更多细节和代码示例

答案 1 :(得分:0)

实际上,我在mac和amp; safari网页浏览器中遇到了跨域cookie问题。 iPhone设备。                   因此,我在客户端计算机上创建了一个临时文件,并将该临时文件中的所有cookie保存为一个域。当我尝试从另一个域文件中读取该cookie时,然后在该文件中我进行了更改,如果未设置cookie,则从该临时文件中获取cookie数据并再次为该第二个域设置cookie。这是成功的。

答案 2 :(得分:0)

这不是直接的答案,但是我自己可以通过使用DNS来使请求不跨域来解决问题。

类似的问题/答案:https://stackoverflow.com/a/53157708/742275