解决nginx自动过滤带下划线的header
发布网友
发布时间:2023-02-16 05:06
我来回答
共1个回答
热心网友
时间:2023-09-16 12:49
最近新增需求,发现客户端请求种header传值给服务器,竟然没获取到。调试后发现在本地是可以获取到前端header传的参数的,但是部署到服务器获取的就是null(服务器地址用nginx做了代理)
原因:
查源码才发现nginx对header name的字符做了*,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉,部署后就获取不到。
解决:
在header里不要用 “_” 下划线,可以用驼峰命名或者其他的符号(如减号-)代替。nginx默认忽略掉下划线,可能是规避参数和nginx的参数关键字重复了,比如下面的结构体指针。
由于参数名字是我们可控的,这种概率不大。所以还是倾向于在nginx里的 nginx.conf文件中配置http的部分添加 : underscores_in_headers on;(默认值是off)