线上遇到的请求头失效问题**
请求头中添加了有定义带有下划线"_"的参数
由于前端请求头中携带的参数带有下划线 然后又通过nginx转发到请求后端接口,nginx是会默认过滤掉所有请求头中带有下划线的header参数,导致后端无法获取这类请求头参数。
解决方案
1、 nginx配置方案:
nginx里的 nginx.conf文件中配置http或者server部分添加 添加一处即可(http是全局 server是单个服务的)
http {
underscores_in_headers on;
}
server {
underscores_in_headers on;
}
2、修改请求头header的参数,不要使用带下划线"_“的请求头,统一规范写成中划线”-", 如:app-key、external-token (建议使用这种规范点)
总结:
HTTP 协议中的请求头 (key-value格式) 需要满足一定的格式要求
下划线和中划线可能都会被映射为 CGI 系统变量名中的下划线,所以为了规范经尽能不要使用下划线的请求头作为key
参考nginx官网说明:http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers