Javascript

node.js中cors模块解析

本文主要是介绍node.js中cors模块解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

作用

主要用来解决客户端请求与服务端的跨域问题,具体步骤在作者解决跨域问题的文章中有说明

cors解决跨域问题的原理:
cors中间件配置在服务端,cors由一系列HTTP响应头组成,这个响应头可以决定浏览器是否阻止前端JS代码跨域获取资源,当接口服务器配置了CORS中间件之后,再发起请求时,就会自动配置相应的请求头,进而解除浏览器的跨域访问限制

cors请求头介绍

origin
指定允许访问该资源的外域url
语法:‘Access-Control-Allow-Origin’,‘域名’
用法: res.setHeader(‘Access-Control-Allow-Origin’,’’),通配符,表示允许来自任何域的请求。
Headers
声明cors支持之外的请求头
**背景:**默认情况下,cors仅支持客户端向服务器发送如下的9个请求头:
Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width、Content-Type
如果需要向服务器发送额外的请求头信息,则需要在服务器端,通过Access-Control-Allow-Headers,对额外的请求头进行声明
用法: res.setHeader(‘Access-Control-Allow-Header’,‘添加的请求头’)
Methods
添加请求方式
**背景:**默认情况下,CORS仅支持客户端发起GET、POST、HEAD三种请求
如果需要认可客户端发起PUT、DELETE等请求方式来请求服务器资源,需要通过Access-Control-Allow-Methods来指明实际请求所允许使用的HTTP方法
用法: res.setHeader(‘Access-control-Allow-Methods’,’
’) //通配符,选定所有请求方式,,或者写入’DELETE’,这种方式也可以

与cors有关的内容

请求分类:
分为简单请求和预检请求
**简单请求:**同时满足条件:(1)请求方式为GET、POST、HEAD之一 (2)http头部信息不超过以下几种字段:无自定义头部、Accept、Accept-Language、Content-Language、DPR、Downlink、Save-Data、Viewport-Width、Width、Content-Type
**预检请求:**符合以下条件之一:(1)请求方式为GET、POST、HEAD之外 (2)请求头中包含自定义头部字段 (3)向服务器发送了application/json格式的数据
**意思:**就是说在浏览器和服务器正式通信之前,检测到了整个请求体中存在非cors默认的信息,此时要通过options进行预检,查明服务端是否允许了此种非默认的改变,如果预检成功,则表示服务端允许了,才会发送正真的请求,并携带回响应的数据
**总结:**简单请求只会存在一次请求,而预检请求会在发送真正请求之前,通过options请求来确认服务器是否允许了此次请求信息中的非默认允许信息

这篇关于node.js中cors模块解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!