自學NodeJS設置Header

前言

這個是給我本身複習用的,你們能夠忽略😄,進來兄嘚抱歉啦javascript

跨域

跨域的解決方案

服務端設置CORS 只容許127.0.0.1:8888進行跨域請求就能夠這樣設置css

response.writeHead(200,{
    'Access-Control-Allow-Origin':'http://127.0.0.1:8888'
})
複製代碼

CORS的預請求

咱們前端若是在header裏攜帶了token,那麼後臺則須要作一下相似的配置:前端

response.writeHead(200,{
    'Access-Control-Allow-Origin':'http://127.0.0.1:8888',//容許請求的網址
    'Access-Control-Allow-Headers':'Token',//容許攜帶的字段名稱
    'Access-Control-Allow-Methods':'POST,PUT,DELETE',//容許的方法類型
    'Access-Control-Max-Age':'10000' //一萬秒內讓瀏覽器再也不發起OPTION預請求,直接發起正式請求
})
複製代碼

緩存頭(Cache-Control)含義和使用

Cache-Control的可緩存性:java

public(http通過的任何地方均可以進行緩存)跨域

private (發起請求的服務器才能夠進行緩存)瀏覽器

no-cache(都不能夠進行緩存)緩存

到期:服務器

max-age=seconds(緩存多少秒後過時)dom

s-maxage=seconds(它能代替max-age=seconds,可是隻有在代理服務器裏纔會生效,也就是說在瀏覽器端最終仍是會讀取max-age=seconds)spa

服務端如何設置Cache-Control

response.writeHead(200,{
    'Cache-Control':'max-age=200'
})
複製代碼

no-cache,Last-Modified,Etag

服務端如何設置no-cache

response.writeHead(200,{
    'Cache-Control':'max-age=200000, no-cache',
    'Last-Modified':'123',//隨便寫
    'Etag':'777'//隨便寫
})
複製代碼

設置no-cache後那個文件始終都會去服務器請求,不會讀取本地的資源,max-age會失效 設置'Last-Modified'和'Etag'後瀏覽器在下次請求時會攜帶if-Modified-Since:123和if-Node-Match:777去驗證資源是否被更改

瀏覽器就能夠取得etag的值返回304告訴瀏覽器資源沒有變動,直接讀取本地就能夠了

if(request.headers['if-none-match'] === '777'){
   response.writeHead(304,{
       'Cache-Control':'max-age=200000, no-cache',
       'Last-Modified':'123',
       'Etag':'777'
   })
   response.end('')
}else{
   response.writeHead(200,{
   'Cache-Control':'max-age=200000, no-cache',
   'Last-Modified':'123',//隨便寫
   'Etag':'777'//隨便寫
   })
}
複製代碼

若是服務端設置了no-store則會忽略header裏面任何與緩存相關的參數,每次仍是會去服務器請求資源

Cookie

服務端設置Cookie

response.writeHead(200,{
    'Cache-Control':'max-age=200000,
    'Set-Cookie':['id=123;max-age=2','abc=456;domain=test.com']
})
複製代碼

CSP

服務端設置CSP

response.writeHead(200,{
    'Content-Security-Policy':'default-src script-src http: https: \'self\' https://cdn.bootcss.com/'
})
複製代碼
相關文章
相關標籤/搜索