一次axios为什么会发两次请求?

在开发过程中,可能会遇到代码里面只有一个 axios,但是打开控制台的网络,却发现有两次请求,如下图所示:

点击其中一个请求,发现method并不是指定的GET请求,而是OPTIONS,那是为什么呢?

原来, 允许跨域的时候, 不只是服务端设置Access-Control-Allow-Origin: *,这是普通的请求,除此之外, 还一种叫请求叫preflighted request

preflighted request在发送真正的请求前, 会先发送一个方法为OPTIONS的预请求(preflight request), 用于试探服务端是否能接受真正的请求,如果OPTIONS获得的回应是拒绝性质的,比如 404\403\500 等 http 状态,就会停止 post、put 等请求的发出。

那么,什么情况下请求会变成 preflighted request 呢?

**1. 请求方法不是 GET/HEAD/POST

  1. POST 请求的 Content-Type 并非 application/x-www-form-urlencoded, multipart/form-data, 或 text/plain
  2. 请求设置了自定义的 header 字段**
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2018-2020 Jee
  • Visitors: | Views:

如果您觉得此文章帮助到了您,请作者喝杯咖啡吧~

支付宝
微信