前端多了一个options请求?是Bug吗?

发现问题:network里有两个请求,多个options请求。

开发解释:这不用管,是浏览器默认发送的一个预检请求。

半信半疑:明明一次请求,干嘛要两次呢,这不是增大服务端压力吗?


自己求证

1、啥是options请求?

就是预检请求,预先检查服务器是否支持跨域请求​​​​​​​,并确认实际请求的安全性。预检请求是由浏览器自动发起的一个额外的 OPTIONS 请求,以获知服务器是否授权后续的实际请求,是为保护客户端的安全,防止不受信任网站利用用户浏览器向其他网站发恶意请求。

2、什么时候触发预检请求?

  • 发出非简单cors请求,浏览器会做一个http的查询请求(预检请求)即optionsoptions请求会按照简单请求来处理。
  • 发送跨域请求时,请求头中包含了一些非简单请求的头信息,如自定义头(custom header)
  • 发送跨域请求时,使用了 PUT、DELETE、CONNECT、OPTIONS、TRACE、PATCH等请求方法

3、预检请求的报文解析:

预检请求头中除了携带了origin字段还包含两个特殊字段:

Orign: 表示允许该来源的请求说明资源是共享的,可以拿到;

Access-Control-Request-Method:告知服务器实际请求使用的HTTP方法

Access-Control-Request-Headers:告知服务器实际请求所携带的自定义首部字段

如预检请求头:

上案例:

"预检请求"是由浏览器自动发起的一个额外的 OPTIONS 请求,以获知服务器是否授权后续的实际请求。

 4、那么能否避免发送options请求呢?​​​​​​​

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值