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 有效期嗎?
默認有效期20分鍾左右,不同瀏覽器策略不同
后端可以強制設置有效期,具體語法看 MDN

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM