HTTP請求由四部分組成,分別是狀態行,請求頭,回車,請求正文javascript
1 動詞 路徑 協議/版本
2 key1:value1
2 key2:value2
2 key3:value3
2 Content-Type:application/x-www-form-urlencoded
2 Host:www.baidu.com
2 User-Agent:curl/7.54.0
3 回車用來區分請求頭和請求正文
4 要上傳的數據
複製代碼
/
HTTP響應格式與請求格式同樣html
在http的響應中java
Content-Length:響應正文的長度,單位爲KB
Content-Type:text/html 響應正文的格式
複製代碼
常見狀態碼的含義:node
//這裏用node演示
res.setHeader('Set-Cookie','user=admin');
複製代碼
if(req.headers.cookie.user=='admin'){
res.end("歡迎管理員");
}
複製代碼
cookie存在的問題:web
res.setHeader("Set-Cookie",'user=admin;max-age=300000;httpOnly');
//max-age能夠改變cookie的有效期
//httpOnly禁止用戶操做cookie
複製代碼
爲了避免讓用戶去篡改cookie的值,咱們能夠把cookie的值存在服務端的一塊內存中,這塊內存叫作session,而拿到該cookie的值,須要一個隨機的key值chrome
let sessionId = Math.random()*100000;
sessions[sessionId] = {user:admin};
res.setHeader('Set-Cookie',`sessionId=${sessionId}`);
//當瀏覽器再次發送請求時,就會帶上sessionId
let sessionId = req.headers.cookie.sessionId;
let user = sessions[sessionId]
if(user=='admin'){
res.end("歡迎管理員");
}
複製代碼
web性能優化裏有設置HTTP緩存這一條,不過是後端操做的json
res.setHeader('Cache-Control','max-age=300');
//在30秒內,相同路徑的http請求會指向本地的緩存,
//不會真正的發送請求,
//這一塊在不斷刷新網頁時,我但願以前已經請求的資源不用再次請求時,能夠設置
//首頁通常不會設置http緩存,否則用戶不知道你網頁更新的消息
複製代碼
localStorage是H5新出的api,能夠用來設置本地緩存後端
注意:api
localStorage只能存String瀏覽器
全部存進去的內容,都會自動調用toString()的方法
localStorage.setItem('name',{name:'hzw'});
//({}).toString() [object Object]
複製代碼
若是真的須要存進對象,那麼就用json格式的
localStroage.setItem('name',JSON.stringify({name:'hzw'}));
//
複製代碼
應用場景:
localStorage通常用來持久化存儲信息
var a = 1;
//在瀏覽器的窗口把a改成2;
//但再次刷新網頁時,a又變爲了1
//這就不能持久化的保存信息
複製代碼
let a = localStorage.getItem('a');
if(!a){
a=1;
}else{
a=(Number)a+1;
}
localStorage.setItem('a',a);
//每次刷新網頁,a就會加1,這就是持久化存儲信息
複製代碼
提示頁面只提示一次
let already = localStorage.getItem('已經提示');
if(!already){
localStorage.setItem('已經提示了',true);
alter("該網頁已經改版");
}
複製代碼
localStorage的特色:
sessionStorage也是H5的api
調用跟localStorage同樣,特色只有第5條不一樣,sessionStorage在用戶關閉頁面時,就失效
這是一篇筆記,寫得不是很好,若是有錯誤的地方,還請看官們指正!感激涕零!