JS設定Cookie,及COOKIE的限制

來源:互聯網
上載者:User

標籤:http   io   color   os   ar   使用   java   sp   檔案   

在Javascript指令碼裡,一個cookie 實際就是一個字串屬性。當你讀取cookie的值時,就得到一個字串,裡面當前WEB頁使用的所有cookies的名稱和值。每個cookie除了 name名稱和value值這兩個屬性以外,還有四個屬性。這些屬性是: expires到期時間、 path路徑、 domain域、以及 secure安全。

Expires – 到期時間。指定cookie的生命期。具體是值是到期日期。如果想讓cookie的存在期限超過當前瀏覽器會話時間,就必須使用這個屬性。當過了到期日時,瀏覽器就可以刪除cookie檔案,沒有任何影響。

Path – 路徑。指定與cookie關聯的WEB頁。值可以是一個目錄,或者是一個路徑。如果http://www.zdnet.com/devhead /index.html 建立了一個cookie,那麼在http://www.zdnet.com/devhead/目錄裡的所有頁面,以及該目錄下面任何子目錄裡的頁面都可以 訪問這個cookie。這就是說,在http://www.zdnet.com/devhead/stories/articles 裡的任何頁面都可以訪問http://www.zdnet.com/devhead/index.html建立的cookie。但是,如果http: //www.zdnet.com/zdnn/ 需要訪問http://www.zdnet.com/devhead/index.html設定的cookes,該怎麼辦?這時,我們要把cookies 的path屬性設定成“/”。在指定路徑的時候,凡是來自同一伺服器,URL裡有相同路徑的所有WEB頁面都可以共用cookies。現在看另一個例子: 如果想讓 http://www.zdnet.com/devhead/filters/ 和http://www.zdnet.com/devhead/stories/共用cookies,就要把path設成“/devhead”。

Domain – 域。指定關聯的WEB伺服器或域。值是網域名稱,比如zdnet.com。這是對path路徑屬性的一個延伸。如果我們想讓 catalog.mycompany.com 能夠訪問shoppingcart.mycompany.com設定的cookies,該怎麼辦? 我們可以把domain屬性設定成“mycompany.com”,並把path屬性設定成“/”。不能把cookies域屬性設定成與設定它的伺服器的 所在域不同的值。

Secure – 安全。指定cookie的值通過網路如何在使用者和WEB伺服器之間傳遞。這個屬性的值或者是“secure”,或者為空白。預設情況下,該屬性為空白,也就是 使用不安全的HTTP串連傳遞資料。如果一個 cookie 標記為secure,那麼,它與WEB伺服器之間就通過HTTPS或者其它安全性通訊協定傳遞資料。不過,設定了secure屬性不代表其他人不能看到你機器本 地儲存的cookie。換句話說,把cookie設定為secure,只保證cookie與WEB伺服器之間的資料轉送過程加密,而儲存在本地的 cookie檔案並不加密。如果想讓本地cookie也加密,得自己加密資料。

JS設定Cookie的方法

   function setCookie(c_name,value,expiredays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/";
   }
   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 "";
   }

 

 

一、瀏覽器允許每個網域名稱所包含的 cookie 數:Microsoft 指出 Internet Explorer 8 增加 cookie 限制為每個網域名稱 50 個,但 IE7 似乎也允許每個網域名稱 50 個 cookie( color="#006da3">《Update to Internet Explorer’s Cookie Jar》)。Firefox 每個網域名稱 cookie 限制為 50 個。Opera 每個網域名稱 cookie 限制為 30 個。Safari/WebKit 貌似沒有 cookie 限制。但是如果 cookie 很多,則會使 header 大小超過伺服器的處理的限制,會導致錯誤發生。註:每個網域名稱 cookie 限制為 20 個將不再正確!二、當很多的 cookie 被設定,瀏覽器如何去響應。除 (可以設定全部cookie,不管數量多少),有兩個方法:最少最近使用(least recently used (LRU))的方法:當 Cookie 已達到限額,自動踢除最老的 Cookie ,以使給最新的 Cookie 一些空間。 Internet Explorer 和 Opera 使用此方法。Firefox 很獨特:雖然最後的設定的 Cookie 始終保留,但似乎隨機決定哪些 cookie 被保留。似乎沒有任何計劃(建議:在 Firefox 中不要超過 Cookie 限制)。三、不同瀏覽器間 cookie 總大小也不同:Firefox 和 Safari 允許 cookie 多達 4097 個位元組, 包括名(name)、值(value)和等號。Opera 允許 cookie 多達 4096 個位元組, 包括:名(name)、值(value)和等號。Internet Explorer 允許 cookie 多達 4095 個位元組, 包括:名(name)、值(value)和等號。註:多位元組字元計算為兩個位元組。在所有瀏覽器中,任何 cookie 大小超過限制都被忽略,且永遠不會被設定。

JS設定Cookie,及COOKIE的限制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.