"Chrome的network中无法显示OPTIONS请求"的解决方案


#事故现场

在前端发送一个跨域请求的时候,要先发送个options请求,从而获知服务端是否允许该跨域请求。

跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。

在实际的代码调试时,发现chrome的network中看不到OPTIONS请求,但是用wireshark抓包是可以看到OPTIONS请求,又检查了下chrome,也没有设置Filter,这就奇怪了!!!

#分析及解决方法

  • 分析
    换用其他浏览器调试,可以看到OPTIONS请求,说明是chrome的设置问题;
  • 解决方法
    在chrome地址栏总输入 chrome://flags/#out-of-blink-cors
    在这里插入图片描述
    将其设置为Disabled ,并重启chrome即可;

#参考


posted @ 2020-02-23 16:46  willingtolove  阅读(7572)  评论(1编辑  收藏  举报