近几天在进行cookies设置的时候,碰到了跨域问题。可以分为两类:1.同根域名,不同二级子域名下的跨域;2.不同域名的跨域。
一、针对第一种,可以使用如下方式进行解决(JS代码):
1.先在a.yourdomain.com设置cookies:
function setCookie(sName, sValue, lTime)
{
if(!sName)
{
return(false);
}
var sExp = "";
if(lTime)
{
var dat1= new Date();
dat1.setTime(dat1.getTime()+(lTime-1));
sExp=" ;expires=" + dat1.toGMTString();
}
document.cookie = escape(sName) + "=" + escape(sValue) + sExp + ";path=/;domain=yourdomain.com" ;
}
2.在b.yourdomain.com读取cookies;
function getCookie(sName)
{
var reg1 = new RegExp("(?: |\\b)" + escape(sName) + "(?:=)?([^ =;]*)", "i");
var ma1 = document.cookie.match(reg1);
if(!ma1)
{
return(null);
}
return unescape(ma1[1]);
}
二、针对第二种情况,有如下几种解决方法:
1.最直接的,设置IIS:
管理工具--选择你的网站--属性--HTTP头--增加一个HTTP头--输入头名“P3P”--输入头内容“CP=CAO PSA OUR”;
注意:这种设置方式可能会导致安全问题,不在本文的讨论范围内;
2.在服务端脚本程序语言中设置(客户端脚本程序语言比如JS没试过,不知是否可行):
a.PHP语言:
<?php
header("P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
?>
b.ASP语言:
<%Response.AddHeader "P3P", "CP=CAO PSA OUR"%>
c.其它语言自己寻找相关参考。
三、更多其它方法,欢迎大家提供!