【问题标题】:IE: How to handle cross-domain cookies?IE:如何处理跨域cookies?
【发布时间】:2011-06-19 11:22:48
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    它将从同一服务器获取相同的位,但现在它将位于主机站点的域内。

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

    如果这不起作用,我建议也向serverfault 提问。

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

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

    【讨论】:

    • 子域:好主意!我也不是iframes 的粉丝,但是如果您想从内部其他地方托管页面,还有其他选择吗您的主要网站?
    • 好主意。在尝试 iframe 第三方支付网关时遇到了同样的问题。
    • 不幸的是,在共享主机上这不是解决方案,因为我无法将子域直接连接到不同的域 - 我的主机提供的只是 HTTP 重定向和帧重定向...
    • 这很不幸。可能有一种方法可以在 php 上进行某种“桥接”(因此它将客户端请求发送到注册站点,然后返回)。我不确定这是否值得花时间。这取决于在主机站点上实施注册需要多长时间。
    • 现在我正在考虑将注册转移到主机站点...可能更简单的解决方案;-)
    【解决方案2】:

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

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

    我不确定您所说的跨域问题是什么意思,因为没有跨域问题 - 您只是拥有来自两个不同域的两个不同文档。您尚未说明您是尝试让一个域为另一个域设置 cookie,还是一个页面访问另一个页面。

    【讨论】:

    • Nup。两个完全不同的域,它们不需要交互。一个只是一个包含注册页面的框架(主页)。跨域:IE只是不喜欢在IFRAME页面中设置cookie。只是“互联网区”不接受 没听说过P3P,我去研究一下!
    猜你喜欢
    • 2010-11-08
    • 2012-09-30
    • 1970-01-01
    • 2012-01-14
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 2017-09-16
    相关资源
    最近更新 更多