https://www.cnblogs.com/moyand/p/9047978.html
cookie、session、token存在意義
http協議是無狀態協議,請求之間是沒有聯系的,cookie、session、token可以幫助服務器區分到底是誰在訪問
cookie工作原理:
小楊要去一個寫字樓, 第一次需要到前台填寫登記表格, 登記完成之后前台給了小楊一張通行卡, 這棟大樓內部的安保人員看到通行卡就能確認小楊的身份信息和授權信息.
這里小楊就是客戶端, 通行卡就是Cookie,前台就是服務端, 表格就是Session. 客戶端第一次訪問服務器, 服務器端保存客戶的信息並且給客戶端一個Cookie, 客戶端攜帶Cookie去訪問服務端, 服務端通過攜帶的Cookie找出該用戶信息. 服務端就能夠知道是誰訪問了.
1.cookie由服務器生成,保存在客戶端瀏覽器。
2.容易被劫持,不安全
session工作原理:
session 從字面上講,就是會話。這個就類似於你和一個人交談,你怎么知道當前和你交談的是張三而不是李四呢?對方肯定有某種特征(長相等)表明他就是張三。
session 也是類似的道理,服務器要知道當前發請求給自己的是誰。為了做這種區分,服務器就要給每個客戶端分配不同的“身份標識”,然后客戶端每次向服務器發請求的時候,都帶上這個“身份標識”,服務器就知道這個請求來自於誰了。至於客戶端怎么保存這個“身份標識”,可以有很多種方式,對於瀏覽器客戶端,大家都默認采用 cookie 的方式。
服務器使用session把用戶的信息臨時保存在了服務器上,用戶離開網站后session會被銷毀。這種用戶信息存儲方式相對cookie來說更安全,可是session有一個缺陷:如果web服務器做了負載均衡,那么下一個操作請求到了另一台服務器的時候session會丟失。
1.session保存在服務端
2.當用戶量太大時,占用服務器資源。
3.較安全
token的工作原理:
1.用戶通過用戶名和密碼向服務端發送請求
2.服務端通過驗證,生成一個token發送給客戶端
3.客戶端保存token,發送請求時帶上token
4.服務器通過驗證,返回數據
token的優勢
1.無狀態、可擴展
2.支持移動設備
3.跨程序調用
4.安全