美文网首页
线上环境node层无法请求到后端接口问题

线上环境node层无法请求到后端接口问题

作者: ThemisHoo | 来源:发表于2020-04-28 21:30 被阅读0次

表现:

1、前端发起请求 --> node端可以接收 --> 后端无请求日志
2、其中只有获取图形验证码接口表现正常,后端可正常返回值
3、测试环境表现均正常

原因:

前端发起请求 --> nodejs,携带req.headers信息
nodejs发起请求 --> 后端接口,直接将上一步的headers信息带进去了
在线上环境中,访问后端接口时,使用的域名,通过nginx时,获取了headers中的host,
将请求的接口地址指向了host中的地址,但此时host为前端地址,所以一直返回404
图形验证码接口可以访问,原因是,nodejs做转发时,由于图形验证码特殊,需要单独写headers,所以没有使用前端带过来的headers
测试环境可以正常访问,原因是,访问测试环境时,一直使用的IP+端口号,不通过nginx,所以没有使用headers中的host

解决方法:

1、不使用前端带过来的headers,全部自定义headers
2、删除header中的host, const headers = req.headers; delete headers.host;

反思:

1、开发过程中,明确每一环节,每一个参数的作用。通过线上和测试不同表现,应该想到是nginx环节出了问题,搞清楚线上和测试的不同点
2、上线前保证测试环境完全模拟线上环境,包括使用域名以及代理路由等等,防止出现此类线上和测试环境表现不一致问题。

相关文章

网友评论

      本文标题:线上环境node层无法请求到后端接口问题

      本文链接:https://www.haomeiwen.com/subject/drkiwhtx.html