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

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

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


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

  1. 防火墙没有关闭,关闭之后,可以正常请求了。
  2. 没有权限,前端请求中没有正确的带上校验信息,比如cookie中的token,或者请求头中没有带上Authorization之类的验证信息
    检查浏览器控制台network看是否有带上验证信息,验证信息是否正确
  3. 时ajax每次发送非简单请求之前,会自动发option请求,看是否是浏览器控制台的option请求报provisional headers are shown,如果是可能是服务器只设置了允许get,post等请求,解决方法是后台如果接收到option请求,就忽略校验,直接通过。

跨域预检请求,请参考:HTTP 的 OPTIONS 方法
阮一峰:跨域资源共享 CORS 详解

简单请求

  1. http方法是以下之一:

    • GET
    • HEAD
    • POST
  2. HTTP的头信息不超出以下几种字段:

    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type (需要注意额外的限制)
    • DPR
    • Downlink
    • Save-Data
    • Viewport-Width
    • Width
  3. Content-Type 的值仅限于下列三者之一:

    • text/plain
    • multipart/form-data
    • application/x-www-form-urlencoded