JS跨域設置與獲取Cookie,測試通過,非常好用!

發布時間:2012年02月16日      浏覽次數:856 次
在Javascript腳本裏,一(yī)個cookie 實際就是一(yī)個字符串屬性。當你讀取cookie的值時,就得到一(yī)個字符串,裏面當前WEB頁使用的所有cookies的名稱和值。每個cookie除了 name名稱和value值這兩個屬性以外(wài),還有四個屬性。這些屬性是: expires過期時間、 path路徑、 domain域、以及 secure安全。

Expires – 過期時間。指定cookie的生(shēng)命期。具體(tǐ)是值是過期日期。如果想讓cookie的存在期限超過當前浏覽器會話(huà)時間,就必須使用這個屬性。當過了到期日期時,浏覽器就可以删除cookie文件,沒有任何影響。

Path – 路徑。指定與cookie關聯的WEB頁。值可以是一(yī)個目錄,或者是一(yī)個路徑。如果http://www.***.com/a/index.html 建立了一(yī)個cookie,那麽在http://www.***.com/a/目錄裏的所有頁面,以及該目錄下(xià)面任何子目錄裏的頁面都可以 訪問這個cookie。這就是說,在http://www.***.com/a/1/2 裏的任何頁面都可以訪問http://www.***.com/a/index.html建立的cookie。但是,如果http: //www.***.com/b/ 需要訪問http://www.***.com/a/index.html設置的cookes,該怎麽辦?這時,我(wǒ)(wǒ)們要把cookies 的path屬性設置成“/”。

在指定路徑的時候,凡是來自同一(yī)服務器,URL裏有相同路徑的所有WEB頁面都可以共享cookies。現在看另一(yī)個例子: 如果想讓 http://www.***.com/a/1/ 和http://www.***.com/a/2/共享cookies,就要把path設成“/a”。

Domain – 域。指定關聯的WEB服務器或域。值是域名,比如***.com。這是對path路徑屬性的一(yī)個延伸。如果我(wǒ)(wǒ)們想讓 a.***.com 能夠訪問b.***.com設置的cookies,該怎麽辦? 我(wǒ)(wǒ)們可以把domain屬性設置成“***.com”,并把path屬性設置成“/”。不能把cookies域屬性設置成與設置它的服務器的 所在域不同的值。

Secure – 安全。指定cookie的值通過網絡如何在用戶和WEB服務器之間傳遞。這個屬性的值或者是“secure”,或者爲空。缺省情況下(xià),該屬性爲空,也就是 使用不安全的HTTP連接傳遞數據。如果一(yī)個 cookie 标記爲secure,那麽,它與WEB服務器之間就通過HTTPS或者其它安全協議傳遞數據。不過,設置了secure屬性不代表其他人不能看到你機器本 地保存的cookie。換句話(huà)說,把cookie設置爲secure,隻保證cookie與WEB服務器之間的數據傳輸過程加密,而保存在本地的 cookie文件并不加密。如果想讓本地cookie也加密,得自己加密數據。

<script type="text/javascript">
//相關調用函數

//設置Cookie,調用方法如:setCookie("myCookie","yes");
function setCookie(c_name,value,expiredays,path,domain) {
      var exdate=new Date();
      exdate.setDate(exdate.getDate()+expiredays); //如果有效時間爲空,則默認有效時間至關閉浏覽器
      if ( path==null || path=="" ) path="/"; //設置默認爲根目錄
      if ( domain==null || domain=="" ) domain=""; //設置默認域名,如:***.com
      document.cookie=c_name+ "=" +escape(value)+";"+((expiredays==null || expiredays=="") ? "" : "expires="+exdate.toGMTString()+";")+((path==null || path=="")?"":"path="+path+";")+((domain==null || domain=="")?"":"domain="+domain+";");
}
//獲取Cookie,調用方法如:getCookie("myCookie");
function getCookie(c_name) {
      if (document.cookie.length>0) {
            c_start=document.cookie.indexOf(c_name + "=");
            if (c_start!=-1) {
                  c_start=c_start + c_name.length+1 ;
                  c_end=document.cookie.indexOf(";",c_start);
                  if (c_end==-1) c_end=document.cookie.length;
                  return unescape(document.cookie.substring(c_start,c_end));
            }
      }
      return "";
}
</script>
免責聲明:本站相關技術文章信息部分(fēn)來自網絡,目的主要是傳播更多信息,如果您認爲本站的某些信息侵犯了您的版權,請與我(wǒ)(wǒ)們聯系,我(wǒ)(wǒ)們會即時妥善的處理,謝謝合作!