木子屋 Dnawo's BLOG

Iframe下Cookie无法保存解决方法

👤 dnawo 📅 2009-12-18 👁 12104 👍 0 💬 0 🔄 来源:本站原创
mzwu.com下有一个SetCookie.asp,内容如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
Response.Cookies("url")="www.mzwu.com"
%>
<script>
    alert(document.cookie);
</script>

sjkuku.com下有一个Cookie.htm,内容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Iframe下Cookie测试-Mzwu.Com</title>
</head>

<body>
<iframe src="http://www.mzwu.com/SetCookie.asp"></iframe>
</body>
</html>

访问Cookie.htm结果:

图片

SetCookie.asp中保存的cookie丢失了,双击IE状态栏隐私报告图标:

图片

可以看到,原因是IE的隐私策略阻止了来自mzwu.com域的cookie,在SetCookie.asp中加入P3P头可解决问题:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
[color=Red]Response.AddHeader "P3P", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"[/color]
Response.Cookies("url")="www.mzwu.com"
%>
<script>
    alert(document.cookie);
</script>

图片

后记:从表面现象来看,似乎是实现了B域在A域下存取cookie,但进一步测试发现,这样生成的cookie仍只能在B域页面中读取,A域名页面是无法直接读取的,同样,A域生成的cookie在B域页面中也一样不能读取。

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 VB制作BHO 下一篇 → GZipStream压缩/解压字符串(C#)