這個是給我本身複習用的,你們能夠忽略😄,進來兄嘚抱歉啦javascript
服務端設置CORS 只容許127.0.0.1:8888進行跨域請求就能夠這樣設置css
response.writeHead(200,{
'Access-Control-Allow-Origin':'http://127.0.0.1:8888'
})
複製代碼
咱們前端若是在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的可緩存性:java
public(http通過的任何地方均可以進行緩存)跨域
private (發起請求的服務器才能夠進行緩存)瀏覽器
no-cache(都不能夠進行緩存)緩存
到期:服務器
max-age=seconds(緩存多少秒後過時)dom
s-maxage=seconds(它能代替max-age=seconds
,可是隻有在代理服務器裏纔會生效,也就是說在瀏覽器端最終仍是會讀取max-age=seconds
)spa
response.writeHead(200,{
'Cache-Control':'max-age=200'
})
複製代碼
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裏面任何與緩存相關的參數,每次仍是會去服務器請求資源
response.writeHead(200,{
'Cache-Control':'max-age=200000,
'Set-Cookie':['id=123;max-age=2','abc=456;domain=test.com']
})
複製代碼
response.writeHead(200,{
'Content-Security-Policy':'default-src script-src http: https: \'self\' https://cdn.bootcss.com/'
})
複製代碼