IE 不接受来自 iframe 的 GET

Posted

技术标签:

【中文标题】IE 不接受来自 iframe 的 GET【英文标题】:IE doesn't accept GET from iframe 【发布时间】:2015-05-14 10:20:07 【问题描述】:

回答

事实证明,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,它会返回一个页面告诉用户登录。

这在 Chrome 和 Firefox 上都可以正常工作,但 IE 只显示“请登录”页面。如果我随后在另一个选项卡中打开 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>

【问题讨论】:

也许你有这个问题(检查第一个答案,你永远不知道):***.com/questions/1173137/… 我已经尝试降低我的安全级别,但遗憾的是它并没有产生任何影响。看来 IE 是故意阻止它的。 哦,我发现下面这个问题是同一个人问的。显然,IE 正确传递了 GET 参数,但没有在 iframe 中设置 cookie:***.com/questions/1329613/… 非常感谢,这似乎确实是问题所在,根据asnwer可以通过p3p策略解决! 原因是IE。 【参考方案1】:

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

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

【讨论】:

以上是关于IE 不接受来自 iframe 的 GET的主要内容,如果未能解决你的问题,请参考以下文章

来自 IE 的不一致的 ajax (XDR) 响应

IE11 在来自 iFrame 的 Ajax POST 操作期间返回状态 0(XMLHttpRequest:网络错误 0x2ee2

iFrame 和 IE 11

PHP 标头重定向不会在 IE 中重新加载 <iframe>

IE 11 第一方会话 cookie 在 iframe 中丢失

ie 下面 js动态设置 iframe src 不显示,一片空白