记录一次前端调用后端接口返回404的经历

问题描述

接口是新开发的,并无上线,因此我在测试环境中带上了后端项目的分支
在测试环境调用后端接口时却发现404报错,如图: 前端

思考过程

  • 首先第一反应是url写错了,好比单词写错,多了"/"等,可是从新去接口文档中复制发现并无错。
  • 接着我怀疑是没有后端接口资源,我直接把接口在浏览器中打开,发现GET请求是可用的。并且通过询问,该接口已经通过了ios和安卓的验证是可行的。我本身用postman请求了一下发现确实能够通 (没填参数,可是是有后端资源的)。

  • 而后我怀疑浏览器里的POST被代理到别的的环境中去了,关Charles关switchyOmega,检查我负责的项目中有没有被中间件代理,然鹅并无。这就有意思了,我顿时以为我可能会从这个问题里学到东西。
  • 仔细看404的返回值是这样的:

openresty是一个基于Nginx 与Lua 的高性能Web 平台,也就是说这个404是Nginx返回的,因而让后端同窗查了一下Nginx日志,比较了一下正常的post接口请求和这个有什么区别。结果发现并无什么不同。通过后端同窗的更进一步探索,发现请求是由两层Nginx代理的,最后竟然会把请求的origin从测试域名修改为线上域名???也就是前端本身调本域名的接口竟然跨域了,直接被Nginx拦下来,且没有跨域报错信息。get请求没有origin,因此正常,post带了origin因此才出错了。其余正常的接口是由于后端作了针对性配置,这个新接口没配,果断让后端去改。这种历史遗留下来的坑真的是防不胜防……

结论

404不必定是纯前端问题,当前端无出错可能时,把目光放到前端之外的范畴,可能会有新答案。ios

相关文章
相关标签/搜索