答案:
事实证明,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>
答案 0 :(得分:0)
事实证明,IE不允许在iFrame中加载的页面放置cookie,这阻止我存储SESSION cookie来识别用户。
防止这种情况的唯一方法是实施P3P策略,如用户Piskvor所述:Cookie blocked/not saved in IFRAME in Internet Explorer