Cookie和登陸註冊

1. 什麼是Cookie?

  1. 服務器經過 Set-Cookie 頭給客戶端一串字符串
  2. 客戶端每次訪問相同域名的網頁時,必須帶上這段字符串
  3. 客戶端要在一段時間內保存這個Cookie
  4. Cookie 默認在用戶關閉頁面後就失效,後臺代碼能夠任意設置 Cookie 的過時時間
  5. 大小大概在 4kb 之內

2. cookie的設置獲取和刪除

cookie是運行在客戶端的,能夠用JS來設置cookie.
首先須要稍微瞭解一下cookie的結構,簡單地說:cookie是以鍵值對的形式保存的,即key=value的格式。各個cookie之間通常是以「;」分隔。後端

  • JS設置cookie:
document.cookie="name="+username;

 

  • JS讀取cookie:
 var getCookie = function (name) { var arr; var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return unescape(arr[2]); else return null; };

 

  • JS刪除cookie:
var delCookie = function (name) { setCookie(name, ' ', -1); };

 

3. cookie的主要做用:

  • 會話狀態管理(如用戶登陸狀態、購物車、遊戲分數和其它須要記錄的信息)
  • 個性化設置(如用戶自定義設置、主題等)
  • 瀏覽器行爲跟蹤(如跟蹤分析用戶行爲)

4. cookie設置語法:

document.cookie = "cookieName=mader; expires=Fri, 31 Dec 2017 15:59:59 GMT; path=/mydir; domain=cnblogs.com; max-age=3600; secure=true";

 

  • cookieName=mader :name=value,cookie的名稱和值
  • expires=Fri, 31 Dec 2017 15:59:59 GMT: expires,cookie過時的日期,若是沒有定義,cookie會在對話結束時過時。日期格式爲 new Date().toUTCString()
  • path=/mydir: path=path (例如 '/', '/mydir') 若是沒有定義,默認爲當前文檔位置的路徑。
  • domain=cnblogs.com: 指定域 (包括全部子域名)
  • max-age=3600: 文檔被查看後cookie過時時間,單位爲秒
  • secure=true: cookie只會被https傳輸 ,即加密的https連接傳輸

5. 相關問題:

我在 Chrome 登陸了獲得 Cookie,用 Safari 訪問,Safari 會帶上 Cookie 嗎?
不會,由於瀏覽器會帶上域名Cookie, Cookie 還能夠根據路徑作限制瀏覽器

Cookie 存在哪?
Windows 存在 C 盤的一個文件裏服務器

Cookie會被用戶篡改嗎?
能夠,能夠用Session 來解決這個問題,防止用戶篡改cookie

Cookie 有效期嗎?
默認有效期20分鐘左右,不一樣瀏覽器策略不一樣
後端能夠強制設置有效期,具體語法看 MDNdom

Cookie 遵照同源策略嗎?
也有,不過跟 AJAX 的同源策略稍微有些不一樣。
當請求 qq.com 下的資源時,瀏覽器會默認帶上 qq.com 對應的 Cookie,不會帶上 baidu.com 對應的 Cookie
當請求 v.qq.com 下的資源時,瀏覽器不只會帶上 v.qq.com 的Cookie,還會帶上 qq.com 的 Cookie加密

相關文章
相關標籤/搜索