解决nginx自动过滤带下划线的header

最近新增需求,发现客户端请求种header传值给服务器,竟然没获取到。调试后发现在本地是可以获取到前端header传的参数的,但是部署到服务器获取的就是null(服务器地址用nginx做了代理)

原因:
查源码才发现nginx对header name的字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉,部署后就获取不到。

解决:

在header里不要用 “_” 下划线,可以用驼峰命名或者其他的符号(如减号-)代替。nginx默认忽略掉下划线,可能是规避参数和nginx的参数关键字重复了,比如下面的结构体指针。


image.png

由于参数名字是我们可控的,这种概率不大。所以还是倾向于在nginx里的 nginx.conf文件中配置http的部分添加 : underscores_in_headers on;(默认值是off)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容