searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Nginx做反向代理转发请求默认忽略带下划线的请求头

2023-05-26 08:40:23
47
0

现象:

       在本地可以正常获取前端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; 

}
0条评论
0 / 1000