Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不能在IE中设置Cookies?_Javascript_Html_Cookies_Internet Explorer 9 - Fatal编程技术网

Javascript 不能在IE中设置Cookies?

Javascript 不能在IE中设置Cookies?,javascript,html,cookies,internet-explorer-9,Javascript,Html,Cookies,Internet Explorer 9,我在website1.com中有以下代码: <script type="text/javascript"> document.cookie = "qwe=1"; alert(document.cookie); </script> document.cookie=“qwe=1”; 警报(document.cookie); 网站2.com包含: <iframe src="http://website1.com"></iframe>

我在website1.com中有以下代码:

<script type="text/javascript">
    document.cookie = "qwe=1";
    alert(document.cookie);
</script>

document.cookie=“qwe=1”;
警报(document.cookie);
网站2.com包含:

<iframe src="http://website1.com"></iframe>

当我在IE中打开网页website2.com时,它会提醒空字符串(如果之前没有设置Cookie)。
其他浏览器警告“qwe=1”


所以问题是为什么以及如何解决这个问题

cookie是通过
document.cookie设置的,但是在下一次页面加载之前,它们不会发送到服务器(因此在服务器上不起作用)。我假设
document.cookie
的标准行为是模仿这一点,在下一个页面加载之前不更新读取值(换句话说,设置
document.cookie
设置cookie,但读取
document.cookie
会提供请求中发送的cookie)

IE9修复了旧版本中存在的许多问题。我指的是一批。这很可能是其中之一。我想,解决办法是自己处理cookies。正如在PHP中一样,我有以下函数:

<?php
function setRealCookie( ... ) {
    setcookie( ... );
    $_COOKIE[...] = ...;
}
?>

在JavaScript中,您可以创建一个对象来跟踪cookie,包括在设置cookie时更新自身等等。比如:

(cookies = {
    data: {},
    init: function() {
        var c = document.cookie.split(";"), l = c.length, i, t;
        for( i=0; i<l; i++) {
            t = c[i].split("=");
            cookies.data[t.shift()] = t.join("=");
        }
    },
    read: function(key) {
        return cookies.data[key];
    },
    set: function(key,value) {
        document.cookie = key+"="+value;
        cookies.data[key] = value;
    }
}).init();
(cookies={
数据:{},
init:function(){
var c=document.cookie.split(“;”),l=c.length,i,t;

对于(i=0;i而言,这与IE中的安全性有关

如果您希望允许访问IFRAME中的Cookie,则应按如下方式设置HTTP标头:

ASP.NET:

HttpContext.Current.Response.AddHeader("p3p","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
JSP:

PHP:

标题('P3P:CP=“我们的”);
 response.addHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"")
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');