IE:如何处理跨域cookie?

时间:2011-02-01 18:09:28

标签: php iframe internet-explorer-8 cross-domain session-cookies

我的主网站( hostsite )有一个IFRAME,其中一个注册网站( regsite )托管在不同的域中。

我想在不同的域上托管注册,因为我觉得在 hostsite 上存储数据库登录信息并不安全,因为很多人都可以访问后端。

所有浏览器都接受来自 regsite 的登录会话cookie - Internet Explorer 8不会。让IE接受此cookie的唯一方法是将两个站点添加到“可信站点”,这不是我想要的。

除了本地浏览器设置之外,我有什么方法可以解决跨域问题,或者是我将注册移动到 hostsite 的唯一选择(curl不是选项它不是我在注册网站上显示的静态HTML,而是PHP文件)?

2 个答案:

答案 0 :(得分:4)

我认为这可以在不移动任何东西的情况下解决,而且很少编程。只是有一些DNS规则。

例如,您可以创建一个名为 register.hostsite(.com)的新子域,该子域指向 regsite 所在的IP。

然后将IFRAME重定向到该新子域。

它将从同一服务器获取相同的位,但现在它将位于hostsite的域中。

这应该(至少在理论上)足以满足IE。我不是100%肯定,但我很久没有使用过IFRAMES了。

如果这不起作用,我建议也在问serverfault

编辑:我正在寻找另一个问题,发现雅虎的这个'微代理'PHP实现。这是他们推荐的解决此类问题的方法:

http://developer.yahoo.com/javascript/samples/proxy/php_proxy_simple.txt

答案 1 :(得分:2)

iframe和IE的问题在于IE将iframe的内容视为第3方(如广告等)。

要让IE实际存储由此域文档设置的cookie,您需要让另一个域发出P3P - 标题,说明其意图。这很容易做到,只需要添加一个http-header。

我不确定你的跨域问题是什么意思,因为没有 - 你只是从两个不同的域有两个不同的文件。您尚未说明是否尝试为另一个域设置一个域名,或者一个页面访问另一个域名。