IE 不接受来自 iframe 的 GET

IE doesn't accept GET from iframe

回答:

事实证明,IE不允许在iFrame中加载的页面放置cookie,这使我无法存储SESSION cookie来识别用户。防止这种情况的唯一方法是按照用户 Piskvor 的解释实施 P3P 策略:Cookie blocked/not saved in IFRAME in Internet Explorer


问题:

我有一个问题,不知道为什么会这样。

我在 domain1.net 上有一个页面,其中有一些 javascript 从该页面抓取一个值,然后将一个 iframe 添加到该页面,该页面具有不同域的 src,例如 http://www.domain2.net/login.php?id=123. login.php 从 url 获取 id,启动 PHP 会话并通过设置 $_SESSION['id'] 使用户登录(请不要评论它有多不安全,它比那复杂一点)。如果在 url 中没有设置 id,它会 returns 一个告诉用户登录的页面。

在 Chrome 和 Firefox 上一切正常,但 IE 只显示 "Please log in" 页面。如果我随后在另一个选项卡中打开 login.php?id=123 页面,它将登录,如果我随后在 domain1.net 上刷新页面,它将显示用户已在 iframe 中登录。

有人可以解释一下吗?似乎 IE 忽略了 iframe url 中的 GET 值。

作为参考,这是我在 domain1.net:

上的代码
<script type="text/javascript">
$(document).ready(function() {
    $.get('http://www.domain1.net/base/header', function (response, status, xhr) {
        var iframeid = response.match(/Profile\/Detail\/(.*?)"/);
        if (iframeid) {
            theid = iframeid[1];
            document.getElementById("addiframe").innerHTML = "<iframe src=\"http://www.domain2.net/login.php?n=" + theid + "\" width=\"100%\" height=\"3000\" frameborder=\"0\" id=\"braintrainer\"></iframe>";
        } else {

            document.getElementById("addiframe").innerHTML = "<iframe src=\"http://www.domain2.net/login.php?logout\" width=\"100%\" height=\"3000\" frameborder=\"0\" id=\"braintrainer\"></iframe>";
        }
    });
});
</script>
<div id="addiframe"></div>

事实证明,IE不允许在iFrame中加载的页面放置cookie,这使我无法存储SESSION cookie来识别用户。

防止这种情况的唯一方法是按照用户 Piskvor 的解释实施 P3P 策略:Cookie blocked/not saved in IFRAME in Internet Explorer