最近项目中,遇到axios请求总是发生provisional headers are
shown问题,网上查找了好多解决办法,都是千篇一律,不外乎三种。然而并没有说出个所以然来

1.请求跨域被拦截
2.被扩展程序拦截
3.服务器未及时响应

后端也配置了corsconfig,后端研发检查了所有代码都没有问题,浏览器也安装任何扩展。


废话不多说,说解决办法,可能会有下面几种情况:

  1. 防火墙没有关闭,关闭之后,可以正常请求了。
  2. 没有权限,前端请求中没有正确的带上校验信息,比如cookie中的token,或者请求头中没有带上Authorization之类的验证信息
    检查浏览器控制台network看是否有带上验证信息,验证信息是否正确

时ajax每次发送非简单请求之前,会自动发option请求,看是否是浏览器控制台的option请求报provisional headers are shown,如果是可能是服务器只设置了允许get,post等请求,解决方法是后台如果接收到option请求,就忽略校验,直接通过。

跨域预检请求,请参考:[HTTP 的 OPTIONS

方法](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/OPTIONS)

阮一峰:跨域资源共享 CORS 详解

简单请求

  1. http方法是以下之一:
  • GET
  • HEAD
  • POST
  1. HTTP的头信息不超出以下几种字段:
  • Accept
  • Accept-Language
  • Content-Language
  • Content-Type (需要注意额外的限制)
  • DPR
  • Downlink
  • Save-Data
  • Viewport-Width
  • Width
  1. Content-Type 的值仅限于下列三者之一:
  • text/plain
  • multipart/form-data
  • application/x-www-form-urlencoded