直接上证据,截图来自于chrowm浏览器-开发者工具-network
一次ajax调用,却发送了二次http请求(一次为请求方法为option,一次为正常请求)

会发现其中一次请求 Method是OPTIONS
一次ajax调用,却发送了二次http请求(一次为请求方法为option,一次为正常请求)

另外一次是正常请求
一次ajax调用,却发送了二次http请求(一次为请求方法为option,一次为正常请求)

原因如下:
浏览器对复杂跨域请求的处理,在发送真正的请求前, 会先发送一个方法为OPTIONS的预请求(preflight request), 用于试探服务端是否能接受真正的请求,如果options获得的回应是拒绝性质的,比如404\403\500等http状态,就会停止post、put等请求的发出。

有三种方式会导致这种现象:
1、请求方法不是GET/HEAD/POST
2、POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
3、请求设置了自定义的header字段

我的Content-Type设置为“application/json;charset=utf-8”并且自定义了header选项导致了这种情况。

参考文章: https://blog.csdn.net/weixin_38958405/article/details/81016246

相关文章:

  • 2021-07-20
  • 2021-11-29
  • 2021-07-01
  • 2021-12-05
  • 2022-12-23
  • 2022-12-23
  • 2022-03-06
猜你喜欢
  • 2022-01-17
  • 2021-12-23
  • 2022-12-23
  • 2021-11-18
  • 2021-07-21
  • 2022-12-23
相关资源
相似解决方案