Nginx做反向代理转发请求默认忽略带下划线的请求头 |
您所在的位置:网站首页 › nginx协议转发 › Nginx做反向代理转发请求默认忽略带下划线的请求头 |
现象:
在本地可以正常获取前端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,是否允许下划线 ngx_http_parse_header_line(ngx_http_request_t *r, ngx_buf_t *b,ngx_uint_t allow_underscores) if (ch == '_') { if (allow_underscores) { hash = ngx_hash(0, ch); r->lowcase_header[0] = ch; i = 1; } else { r->invalid_header = 1; } break; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |