现象:
在本地可以正常获取前端header传的参数,但是部署到服务器后无法获取前端传的请求header(服务器地址使用nginx做了代理转发)
原因:
nginx对header name的字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉,部署之后就获取不到。
解决:
1、在header里不要用 “_” 下划线,可以用驼峰命名或者其他的符号(如减号-)代替。nginx默认忽略掉下划线可能有些原因。
2、在nginx里的 nginx.conf文件中配置http的部分添加 : underscores_in_headers on;(默认值是off)
网上找到了下面一段nginx源码,有对下划线进行检测处理,后边可以再研究下源码:
变量:allow_underscores,是否允许下划线
|