Nginx无法获取带下划线的请求头数据问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx无法获取带下划线的请求头数据问题相关的知识,希望对你有一定的参考价值。
参考技术A 今天在开发中有这样一个请求:前端需要在http请求中携带参数,后端获取参数进行解析并进行后续操作。前后端分离
前端:Nuxt + axios
后端:Springboot + dubbo
在线下环境进行测试的时候一切都是可以的,但是部署到线上环境却发现无法获取请求头中的参数信息
① 从代码版本来看,线上和线下都是一致
② 运行环境一致
③ 除新功能外,项目其他部分运行正常
以一个数据查询的功能为切入点,进行接口调试然后发现:
能正常获取请求头中的参数!
① 线下是本地运行,连接测试库
② 线上是云服务器运行,连接正式库
③ 线上有使用到nginx反向代理
首先线上接口是OK,调试也正正常通。那么很大可能是前后端联调出的问题。于是我又运行本地的前端项目联调线上接口发现也是不行的。
到这里的话,问题已经很清晰了:线上项目有经过Nginx进行反向代理,那大概率就是Nginx这个环节出现问题了。
① 从Nginx日志中发现如下:
到这里已经很明确了,就是Nginx不能识别请求头中的access_token
② 网上查询相关资料
Nginx中关于: underscores_in_headers on;
的配置是默认关闭的,于是不能识别到accessToken
在server模块中配置: underscores_in_headers on;
access_token 修改为 accessToken
另外记录下遇到的其他问题:
① Dubbo中不能序列化HttpServletRequest,需要再消费者的业务实现类中进行数据获取,然后传递给生产者。
没有什么技术含量,流水账罢了...
以上是关于Nginx无法获取带下划线的请求头数据问题的主要内容,如果未能解决你的问题,请参考以下文章