跨域cookies問題的解決(含iframe問題)

 

  近幾天在進行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.其它語言自己尋找相關參考。

  三、更多其它方法,歡迎大家提供!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章