Cookie 是一些數據, 存儲於你電腦上的文本文件中。 javascript
當 web 服務器向瀏覽器發送 web 頁面時,在鏈接關閉後,服務端不會記錄用戶的信息。 html
Cookie 的做用就是用於解決 "如何記錄客戶端的用戶信息":java
當用戶訪問 web 頁面時,他的名字能夠記錄在 cookie 中。web
在用戶下一次訪問該頁面時,能夠在 cookie 中讀取用戶訪問記錄。跨域
當瀏覽器從服務器上請求 web 頁面時, 屬於該頁面的 cookie 會被添加到該請求中。服務端經過這種方式來獲取用戶的信息。瀏覽器
總的來講,Cookie是保存在本地的一個字符串數據,瀏覽器每次訪問服務器就會把對應頁面的Cookie發送給服務器,這樣服務器就能知道你是誰。安全
查看Cookie的方式:開發者工具(F12) -> Application -> 左側Storage分組下的Cookies服務器
以name=value
的方式儲存(名/值對),而且是明文的cookie
默認狀況下,cookie的有效期間是當前會話(須要把整個瀏覽器都關閉會話就結束)dom
不能夠跨瀏覽器(在IE中保存的cookie, 不能夠在火狐中使用)
不能夠跨域(跨域名)
每一個網頁中存儲cookie的個數(最多50)和每一個網站中存儲cookie的個數都有限制(200)
有大小限制(4KB左右)
瀏覽器 | 大小(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
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就自動會被刪除。
var date = new Date(); date.setDate( date.getDate() - 1 ); // 給一個過去的時間 document.cookie = 'username="Evgni0n"; expires=' + date + ';';
expires
: 生存週期
path
: 一個路徑
domain
: 子域
secure
: 安全性
默認狀況下,回話結束就會刪除Cookie,可是給這個屬性設置了一個時間(GMT格式)以後就會等到這個時間過時才刪除Cookie,如document.cookie = 'username="Evgni0n"; expires=' + date + ';'
。
默認狀況下,在同一個目錄下文件能夠調用;
http://www.evgni0n.com/page/1.html
設置的Cookie能夠被 http://www.evgni0n.com/page/2.html
調用.但不能被 http://hanj.com/article/1.html
目錄下的文件調用;
通常設爲「/」,以表示同一個站點的全部頁面均可以訪問這個Cookie。
指定在該子域下才能夠訪問Cookie,例如要讓Cookie在a.test.com
下能夠訪問,但在b.test.com
下不能訪問,則可將domain設置成a.test.com
。
例如設成 ".evgni0n.com"
則在 .evgni0n.com
下的全部服務器下的文件均可以調用Cookie。
指定Cookie是否只能經過https協議訪問,通常的Cookie使用HTTP協議既可訪問,若是設置了Secure(沒有值),則只有當使用https協議鏈接時Cookie才能夠被頁面訪問。
如:document.cookie = 'username="Evgni0n"; expires=' + date + ';secure;'