vue跨域拦截浏览器options预检

vue

       当你跨域访问接口的时候,会发现你的接口请求了两次,然后仔细对比一下会发现请求类型并不一致,一个是OPTIONS,另一个是你的POST请求。事情是这样发生的,当浏览器发现你准备跨域进行非简单请求的时候(有关简单请求说明请移步https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Simple_requests),他会自发的发出一个OPTIONS请求进行预检查,用来判断这个接口后台是否允许访问,如果行,那就会把你真正的请求发出去,如果不行,那就到此为止了。

    如下图所示,这个时候你的跨域非简单请求已经触发了浏览器的OPTIONS预检查,这个时候我们还是有方法去拦截OPTIONS的。(为了减少请求的次数我们需要拦截OPTIONS预检)

     第一种方法就是在npm上下载一个qs模块,只要把你的参数用qs.stringify包装一下就行了。我们可以发现,和之前的POST请求相比,他的请求参数格式变成了Form Data,也就是说qs.stringify把入参包装成了post表单提交的数据格式,请求就变成了‘简单请求’

     第二种方法就是使用get请求。其实所有的方法归根结底就是想办法把请求简单化,这从某种意义上讲并不是拦截OPTIONS请求,而是想办法从根本上不发生OPTIONS请求。如果你的项目有node的话,那可以从这里去做拦截,但是浏览器仍然会发送OPTIONS预检。

以上是 vue跨域拦截浏览器options预检 的全部内容, 来源链接: utcz.com/z/376631.html

回到顶部