原文链接 http://qiaoshi.iteye.com/blog/2147882
- 您使用了 nginx 作为反向代理
- 您自定义 header 的 key 中使用了“_”,而不是“-”
// 在 ngx_http_parse_header_line()函数中
if(ch ==‘_’) {if (allow_underscores)
Unknown macro: {hash = ngx_hash(hash, ch);
r->lowcase_header[i++] = ch;
i &= (NGX_HTTP_LC_HEADER_LEN -- 1);\
} else
Unknown macro: {r->invalid_header = 1;}
以上代码说明 nginx 对 header name 的字符做了限制,默认 underscores_in_headers
为 off,表示如果 header name 中包含下划线,则忽略掉。
- 您可以将您程序中的“_”都改为“-”
- 您也可以在 nginx 配置中设置 underscores_in_headers on;