nginx中HTTP自定义header有时候接收不到,无内容分析

nginx中HTTP自定义header有时候接收不到

1、出现此问题需满足的条件:

使用了nginx作为反向代理

自定义header的key中使用了"_",而不是“-”

2、原因:

#在ngx_http_parse_header_line()函数中
if(ch == '_'){
    if(allow_underscores)
        Unknown macro: {
            hash = ngx_hash(hash,ch);
            r->lowcase_header[i++] = ch;
            i &=(NGX_THHP_LC_HEADER_LEN -- 1);
        }
    else
        Unknown macro: {
            r->invalid_header = 1;
        }
}

以上代码说明nginx对header name的字符串做了限制,默认underscores_in_headers为off,表示如果header name中包含下划线,则忽略

3、解决方法:

可以将程序中的“_”都改为“-”

可以在nginx配置中的http下设置underscores_in_headers on;

  • 发表于 2019-11-19 15:16
  • 阅读 ( 86 )
  • 分类:Nginx

0 条评论

请先 登录 后评论
不写代码的码农
D.Chen

4 篇文章

作家榜 »

  1. Kemin 39 文章
  2. golanglover 5 文章
  3. D.Chen 4 文章
  4. salamander 1 文章
  5. 深圳-伟 1 文章
  6. 广训 1 文章
  7. PHP小菜 1 文章
  8. Undefined 0 文章