场景复现x_test 去哪儿了?

www@SD-20200928IIIF:~$ curl --location --request GET 'http://localhost/test/header/get-header.php' \> --header 'x_test: xxxxx' \> --header 'y-test: yyyyy'{ "post": [], "header": { "y-test": "yyyyy", "user-agent": "curl\/7.68.0" }}缘故原由:

实在nginx对header name的字符做了限定,默认 underscores_in_headers 为off。

当是off的时候,忽略在客户端要求头字段中设置的下划线参数。
名称包含下划线的要求标头字段将被标记为无效,并受ignore_invalid_headers指令的约束 。

getheaderphpnginx做转发时带下划线字段的header内容丧失 Node.js

之所以为off,实在官方也是不推举采取下划线办法的。

办理办法

方法一:

header中自定义变量名时不要用下划线

个人比较推举这种办法。
常见的header变量都是遵照这种办法,例如:Content-Type,Content-Length,Accept-Ranges等。

方法二:

在nginx.conf中加上underscores_in_headers on配置

http { ... underscores_in_headers on;}