侧边栏壁纸
  • 累计撰写 208 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

关于nginx请求头中有下划线_的坑

Wake
2023-03-24 / 0 评论 / 0 点赞 / 922 阅读 / 340 字

1.问题

之前遇到常规访问服务,然后返回的状态是401,提示令牌失效(Token Invalid )。接着直接访问后端所代理的服务,然后就是正常的。
听上去很明显啦,事情基本就是到nginx这里卡住了。获取验证码以及登陆都是没有问题的,但是就是这里的token没有传过去,token是放在请求头里边的,这个头的名称是“old_token”。

2.解决

我想到是通过nginx做的代理转发,会不会是nginx搞的鬼?于是搜索“nginx request header 丢失”,果不其然是这个问题,nginx对下划线的头信息做了限制

2.1不要用下划线。

既然nginx对下划线不支持,那没关系,不用下划线就是了。比如原来old_token改成old-token就可以了。(难怪一般header的name都是-来拼接的,比如User-Agent) 。

2.2从根本上解除nginx的限制 。

nginx默认request的header的那么中包含_时,会自动忽略掉。
解决方法是:在nginx里的nginx.conf配置文件中的http部分中添加如下配置:

underscores_in_headers on;

默认 underscores_in_headers 为off。

0

评论区