近幾天在進行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.其它語言自己尋找相關參考。
三、更多其它方法,歡迎大家提供!