自学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/'
})
复制代码
相关文章
相关标签/搜索