IE不接受iframe的GET

时间:2015-03-12 10:04:52

标签: javascript php jquery internet-explorer iframe

答案

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


问题

我遇到了问题,不知道为什么会这样。

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

这一切都适用于Chrome和Firefox,但IE只显示“请登录”页面。如果我然后在另一个选项卡中打开login.php?id=123页面,它将登录,如果我然后刷新domain1.net上的页面,它将显示用户已登录iframe。

有人可以对此有所了解吗? IE似乎忽略了iframe网址中的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>

1 个答案:

答案 0 :(得分:0)

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

防止这种情况的唯一方法是实施P3P策略,如用户Piskvor所述:Cookie blocked/not saved in IFRAME in Internet Explorer