【沒有實踐系列】關於cookie的學習筆記

1、前言

一直在扭螺絲,徹底沒有碰過登陸這塊,只能先從文章學習學習前端

2、幾個點過一遍

1. http協議是無狀態協議

咱們都知道,http協議是無狀態協議,服務器不知道究竟是哪一個靚仔在請求它的接口,那這個特性會致使什麼問題呢?
最多見的就是,好比我登陸了一個頁面以後,緊接着請求一個接口,這個時候若是我不攜帶一些參數過去,那根據這個特性,接口是不知道我是那個已經登陸好的用戶。算法

2. cookie,session,token

基於上面那個問題,後面就出現了兩套解決方案,後端

(1)一套是cookie + session

在用戶首先登陸輸入完帳號密碼以後,後端校驗以後,在接口返回的時候後端會寫一段代碼在響應的時候後把一個sessionId存入cookie中,(注意這裏是後端操做的,這個步驟不用前端參與),接下來後面的接口請求的時候都會自動帶上cookie給後端(cookie的特性之一),後端就知道這個請求時哪一個登陸了的用戶瀏覽器

缺點:
1.後端要存這個session的信息,有資源消耗;
2.要處理session在不一樣服務器共享的問題;緩存

(2)一套是cookie+token

一旦登陸的用戶多起來,這個session的消耗是巨大的,爲了解決這個問題,後面就改爲後端不保存這個session,那不保存了,要怎麼校驗這個身份呢?
那些靚仔想到一種叫token(令牌)的校驗,原理是這樣。
一樣是用戶登陸輸入完帳號密碼以後,一樣是要返回一個id給客戶端而且存起來,可是這個時候,後端再用一個算法加一個密鑰對這個id作一個簽名,並把這個簽名跟數據一塊兒保存在cookie,
接下來接口請求的時候同樣帶上cookie,此時後端校驗的時候,他拿到數據後再用一樣的算法和密鑰再作一個簽名,而後對比這個簽名是否是跟你傳過來的簽名是同樣的服務器

3. cookie的基本介紹

1. 什麼是cookie

cookie是用來存儲文本信息的文件,在硬盤空間能夠找到(設置了過時時間的話),在瀏覽器能夠看到,按F12,瀏覽器緩存那裏就能夠看到。cookie

2. cookie做用

主要用來保存會話狀態,它的特性之一會跟隨接口的調用自動帶上(設置的時候配置),因此一旦cookie多了,也會有性能的問題。
固然也有人用它來作數據緩存,可是通常不推薦,由於這玩意有大小限制,單個不能超過4k,臨時存數據仍是考慮localStorage這種session

3. cookie相關知識

(1)大小
單個限制4k,什麼叫單個,看圖
image.png
一條就是單個,並且總的大小也是有一個限制,不一樣瀏覽器好像不一樣,好比Firefox每一個域名cookie限制爲50個。性能

(2)操做(這裏指前端)學習

  • 建立一個cookie
document.cookie="userId=828999";
  • 建立一個cookie,多個鍵值對的話,用分號分割
document.cookie="userId=828;username=lll";
  • 重寫,保證name同樣
document.cookie="userId=999";
  • 刪除,設置expires屬性,屬性值爲過去的時間
//獲取當前時間
var  date=new  Date();

//將date設置爲過去的時間,減了1毫秒就確定是過去的時間
date.setTime(date.getTime() - 1);

document.cookie="userId=999;expires="+date.toGMTString();
  • 讀取cookie,這個讀取的值是所有的cookie,讀出來的值是一串很長的字符串,須要本身處理切割
document.cookie

image.png

相關文章
相關標籤/搜索