IE& Safari浏览器阻止iframe中的跨域cookie。
e.g。
我有两个网站,假设他们是example.com
和anotherexample.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中运行吗?
答案 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来使请求不跨域来解决问题。