接口请求报错 net::ERR_EMPTY_RESPONSE

场景

使用fetch请求接口,控制台报错net::ERR_EMPTY_RESPONSE。
但是使用Swagger请求接口正常,
使用Postman请求接口也正常。

排查问题

  1. 是不是因为浏览器多重跨域导致。因为当前项目后端地址涉及多重转发。
  2. 是不是因为Access-Control-Allow-Header, 没有允许对应的请求头参数。
  3. 是不是因为Access-Control-Allow-Origin,没有设置对应的域名导致。

排查结论

  1. nginx和后端同时配置了CORS请求头,取消了nginx配置的CORS,只使用后端的CORS配置但是问题依旧。
  2. 补充了对应的请求头参数,但是接口依然报错。
  3. Access-Control-Allow-Origin已经设置为*,接口还是没有办法请求通。

没有头绪,百度和Google了一下说是后端接口没有返回参数。

再次提出问题

是不是因为OPTIONS请求被拒绝?

尝试解决问题

使用POSTMAN,请求对应方法的OPTIONS请求,发现确实是因为OPTIONS请求被拒绝导致,联系服务器运营处理解决。

总结

使用fetch发送请求的时候,如果设置了headers的数据或者Content-Type类型为application/json,fetch请求都会向浏览器中发送一个OPTIONS请求,来询问服务器后续请求能否成立。

参考资料

OPTIONS请求介绍

你可能感兴趣的:(深入前端,http,前端)