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
回答:
事实证明,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