cors解决跨域问题

cors是作为中间件解决跨域,实现代码

npm i cors

const cors=require('cors')

app.use(cors())

注意事项

  1. cors只需要在服务端配置,客户端不用配置
  2. cors在浏览器中有兼容性,只支持XMLHttpRequest Level2开启了cors的服务端口(ie10+,Chrome4+,FireFox3.5+)

cors响应头部Access-Control-Allow-Origin:*表示来自任何域的请求

//实现方式
response.setHeader('Access-Control-Allow-Origin','*')
//也可以指定为某个域名只有http://wcg.cn这个域名可以访问到
response.setHeader('Access-Control-Allow-Origin','http://wcg.cn')

cors响应头部Access-Control-Allow-Headers,客户端仅支持向服务器发送以下九个请求头:
Accept
Accept-Language
Content-Language
DPR
Downlink
Save-Data
Viewport-Width
Width
Content-Type(值只限于text/plain、multipart/form-data、application/x-www-form-urlencoded)

当客户端发送额外的头信息,需要在服务端,通过Access-Control-Allow-Headers声明

response.setHeader('Access-Control-Allow-Headers','Content-Type, X-Custom-Header')

cors响应头部Access-Control-Allow-Methods,cors仅支持客户端向服务端发送的GET,POST,HEAD请求,如果客户端发送的请求包括其他的如DELETE,PUT请求资源则需要声明

	response.setHeader('Access-Control-Allow-Methods','GET,POST,HEAD,DELETE,PUT')
	//允许所有
	response.setHeader('Access-Control-Allow-Methods','*')

简单请求

满足两大条件:

  1. 请求方式为GET,POST,HEAD三者之一
  2. http头部信息不超过以下字段: Accept
    Accept-Language
    Content-Language
    DPR
    Downlink
    Save-Data
    Viewport-Width
    Width
    Content-Type(值只限于text/plain、multipart/form-data、application/x-www-form-urlencoded)

预检请求

包括下列任何一个请求

  1. 请求方式为GET,POST,HEAD之外的请求
  2. 请求头包括自定义头部
  3. 例如向服务器发送了application/json格式的数据,即简单请求的对立

预检请求浏览器会先发送OPTION请求预检,以获取服务器是否允许请求,服务器响应成功预检后才会正式请求并响应数据

预检请求和简单请求区别

  1. 简单请求:客户端与服务器只发生一次请求
  2. 预检请求:客户端与服务端发送两次请求,一次预检请求option之后发生一次真正的请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值