[HTTP 學習筆記]Cookie

Cookie

作用

Cookie 是一段由服務器通過在請求或響應報文發送給客戶端的特殊信息,客戶端會記錄該信息,當下次發送請求時會在請求頭中附帶該信息,由服務器進行識別。

Cookie 通常有以下幾種作用:

會話狀態管理(如用戶登錄狀態、購物車)
個性化設置(如用戶自定義設置)
瀏覽器行為跟蹤(如跟蹤分析用戶行為)

創建Cookie

  • 服務器使用Set-Cookie響應頭,告知客戶端應該保存該信息
Set-Cookie: <cookie名稱>=<cookie值>

栗子:

HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: sid=1342077140226724
  • 客戶端發起新請求時會將以前保存過的Cookie通過請求頭發送給服務器
GET / HTTP/1.1
Cookie: sid=1342077140226724

期限

  • Session Cookie
    通常,當Cookie未做任何指定期限時,瀏覽器會將Cookie信息保存在內存中,瀏覽器關閉后便自動刪除,比如我們登錄一些網站時不勾選“自動登錄”選項時,我們關閉瀏覽器登錄狀態就自動刪除了。需要注意的是,該狀態由瀏覽器控制,因此部分瀏覽器也會提供關閉瀏覽器不清理cookie的功能。

  • Permanent Cookie
    通過指定過期時間(Expires)或有效期(Max-Age),可以為瀏覽器指定一個過期時間,此時Cookie便儲存在硬盤上,而不是儲存于內存。

Set-Cookie: uuid=123456; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
//

作用域

Cookie作用域指需要發送的URL集合,它由Domain和Path指令定義。
Domain表示Cookie所在的域。如果沒有指定,默認為當前的文檔地址上的主機名(但是不包含子域名)。如果指定了Domain,則一般包含子域名。

如果設置了Domain=test.com,則Cookie包含在子域名中(如user.test.com或login.test.com)。

Path指令表明需要發送Cookie的URL路徑。字符%x2F (即"/")用做文件夾分隔符,子文件夾也會被匹配到。

如設置Path=/docs,則下面這些地址都將匹配到:

"/docs",
"/docs/Web/",
"/docs/Web/HTTP"

JavaScript訪問Cookie

可以通過document.cookie創建新的Cookie,或者通過該屬性訪問未指定的HttpOnly標志的Cookie。

document.cookie = "yummy_cookie=choco"; 
document.cookie = "tasty_cookie=strawberry"; 
console.log(document.cookie); 
// logs "yummy_cookie=choco; tasty_cookie=strawberry"

Session

對于Cookie來說,通過HTTP協議傳輸的信息均是明文傳輸,任何人都可以截獲、篡改HTTP請求。因此客戶端傳來的信息是不可靠的,那么有什么辦法來解決這個問題呢?

數據傳輸時,服務器與客戶端之間不使用明文傳輸,而是傳輸加密后的密文,當服務器接收到密文后將密文解析,如果信息正確再通過解析后的密文找到對應數據返回給客戶端。

這個過程我們成為會話(session),即客戶端與服務器之間一對一的交互。

參考:
HTTP cookies

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容