cookie?
1. 服務器通過 Set-Cookie 響應頭設置 Cookie
response.setHeader('set-cookie','key:value')
2.瀏覽器(前端)得到的響應頭里的 cookie,之后每次請求都會帶著cookie
cookie:id;
3.?服務器通過讀取 Cookie 就知道登錄用戶的信息
request.header.cookie? //? 然后對比數據庫驗證用戶信息
由于直接使用cookie, 會很容易的被用戶偽造cookie,所以引出sessison來解決這個問題
cookie = new Cookie("cookiename","cookievalue");
//設置Cookie最大生存時間,以秒為單位,負數的話為瀏覽器進程,關閉瀏覽器Cookie消失?
cookie.setMaxAge(3600);
//設置cookie過期時間為1個小時
cookie.setPath("/");
//設置路徑,這個路徑即該工程下都可以訪問該cookie 如果不設置路徑,那么只有設置該cookie路徑及其子路徑可以訪問?
response.addCookie(cookie);
// 將Cookie添加到Response中,使之生效
setCookie(name, "", -1);//刪除一個cookie, 讓 setCookie函數的第二個參數為空就會刪除這個name coikie
sessions
1. 在服務器創建一個對象?
sessions = []
sessionsID? = Math.random*100000? ? //使用一個隨機數當用戶的sessionsID
sessions[sessionsID] = 用戶信息? ?//把這個ID放入后臺臨時數據庫(sessions對象)中
response.setHeader('set-cookie',?sessionsID )
2.瀏覽器(前端)得到的響應頭里的 cookie,之后每次請求都會帶著cookie
cookie: sessionsID;
3.?服務器通過讀取 Cookie 就知道登錄用戶的信息
request.header.cookie? //? 然后對比數據庫驗證用戶信息
與直接使用cookie相比,用sessions隨機數生成ID暴露給前端隨機數,顯得更加安全
localstorage
一個?Storage?可被用于訪問當前遠端( origin )的本地存儲空間的對象.
LocalStorage 跟 HTTP 無關,localstorage永久有效,除非用戶清理緩存,每個域名 localStorage 最大存儲量為 5Mb 左右,
只有相同域名的頁面才能互相讀取 LocalStorage
具體的集中使用方法
localStorage.setItem('myCat', 'Tom'); //設置,為本地storage對象添加一個key,value.
var cat = localStorage.getItem("myCat");//讀取localstorage對象的“ myCat ”的?value
localStorage.removeItem("myCat");//移除一個key及value
sessionstorage
與localstorage相同,唯一不同點是SessionStorage 在用戶關閉頁面(會話結束)后就失效。
Cache-Control
通過設置Cache-Control時間,讓相同的url時瀏覽器會在這個時間內,阻斷請求,利用緩存加載,達到性能優化目的。
//后端設置響應頭
response.setHeader('Cache-Control','maxage-600')? ?// 相同的url 600S內不請求
Expires
?與Cache-Control功能一樣,不同點是Cache-Control是設置多長時間后過期。Expires是直接設置一個過期的日期,格式為GMT
MD5
Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計算機安全領域廣泛使用的一種散列函數.
ETag
//后端設置響應頭
response.setHeader('ETag',md5)?
//客戶端收到響應頭
//會有ETag:? '當前文件MD5'
//同一個文件客戶端下一次請求時會帶上
IF-None-Math:"當前文件MD5"
//后端收到請求會進行對比MD5,如果相同代表不需要更新。
Cache-Control, Expires ,ETag的區別
Cache-Control,?Expires是通過設置時間讓瀏覽器阻斷請求,ETag是沒有阻斷請求,是后端驗證MD5是否改變來做出相應的響應。