js Cookie

Cookie 是一些數據, 存儲於你電腦上的文本文件中。 javascript

當 web 服務器向瀏覽器發送 web 頁面時,在鏈接關閉後,服務端不會記錄用戶的信息。 html

Cookie 的做用就是用於解決 "如何記錄客戶端的用戶信息":java

  • 當用戶訪問 web 頁面時,他的名字能夠記錄在 cookie 中。web

  • 在用戶下一次訪問該頁面時,能夠在 cookie 中讀取用戶訪問記錄。跨域

當瀏覽器從服務器上請求 web 頁面時, 屬於該頁面的 cookie 會被添加到該請求中。服務端經過這種方式來獲取用戶的信息。瀏覽器

總的來講,Cookie是保存在本地的一個字符串數據,瀏覽器每次訪問服務器就會把對應頁面的Cookie發送給服務器,這樣服務器就能知道你是誰。安全

查看Cookie的方式:開發者工具(F12) -> Application -> 左側Storage分組下的Cookies服務器

Cookie的特色

  • name=value的方式儲存(名/值對),而且是明文cookie

  • 默認狀況下,cookie的有效期間是當前會話(須要把整個瀏覽器都關閉會話就結束)dom

  • 不能夠跨瀏覽器(在IE中保存的cookie, 不能夠在火狐中使用)

  • 不能夠跨域(跨域名)

  • 每一個網頁中存儲cookie的個數(最多50)和每一個網站中存儲cookie的個數都有限制(200)

  • 有大小限制(4KB左右)

Cookie的過時時間和數量

瀏覽器 大小(Byte 字節) 數量(每一個域名)
IE6.0 4095 20
IE7.0/8.0 4095 50
Opera 4096 30
Fire Fox 4097 50
Safari 4097 無限制
Chrome 4097 53

在進行頁面cookie操做的時候,應該儘可能保證cookie個數小於50個(除非兼容IE6),總大小 小於4KB

操做Cookie

設置Cookie:

document.cookie = 'username="Evgni0n"';

設置過時時間:

在值的後面添加一個expires字段,而且放一個GMT時間的值(js中放一個date對象就是GMT)。

var date = new Date();
date.setDate( date.getDate() + 7 );   // 7天過時
document.cookie = 'username="Evgni0n"; expires=' + date + ';';

在設置Cookie的時候一次性只能設置一個Cookie,不能批量設置,如:document.cookie = 'username="Evgni0n"&age=18';這樣設置的話,Name字段還是username,而Value字段則會變成"Evgni0n"&age=18

刪除Cookie:

沒有提供方法刪除Cookie,可是Cookie過時就會被刪除,因此只要設置一個過去的時間Cookie就自動會被刪除。

var date = new Date();
date.setDate( date.getDate() - 1 );   // 給一個過去的時間
document.cookie = 'username="Evgni0n"; expires=' + date + ';';

Cookie有4個屬性

  1. expires: 生存週期

  2. path: 一個路徑

  3. domain: 子域

  4. secure: 安全性

expires

默認狀況下,回話結束就會刪除Cookie,可是給這個屬性設置了一個時間(GMT格式)以後就會等到這個時間過時才刪除Cookie,如document.cookie = 'username="Evgni0n"; expires=' + date + ';'

path

默認狀況下,在同一個目錄下文件能夠調用;

http://www.evgni0n.com/page/1.html 設置的Cookie能夠被 http://www.evgni0n.com/page/2.html 調用.但不能被 http://hanj.com/article/1.html 目錄下的文件調用;

通常設爲「/」,以表示同一個站點的全部頁面均可以訪問這個Cookie。

domain

指定在該子域下才能夠訪問Cookie,例如要讓Cookie在a.test.com下能夠訪問,但在b.test.com下不能訪問,則可將domain設置成a.test.com

例如設成 ".evgni0n.com" 則在 .evgni0n.com 下的全部服務器下的文件均可以調用Cookie。

secure

指定Cookie是否只能經過https協議訪問,通常的Cookie使用HTTP協議既可訪問,若是設置了Secure(沒有值),則只有當使用https協議鏈接時Cookie才能夠被頁面訪問。

如:document.cookie = 'username="Evgni0n"; expires=' + date + ';secure;'

相關文章
相關標籤/搜索