Javascript 不能在IE中设置Cookies?
我在website1.com中有以下代码: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>
<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"');