1.问题:
请求的 header里传的值,直接通过IP访问可以获取到,通过域名(即NGINX)获取不到
HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse response = (HttpServletResponse)servletResponse; String loginToken = request.getHeader("AUTHORIZATION_TOKEN"); logger.info("loginToken:" + loginToken);
2.原因:
默认情况下,并不是所有headers
的fields
它都会转发,fields
里带有下划线(_)
的,Nginx视为不合法,自动抛弃
不发了。例如:AUTHORIZATION_TOKEN
3.解决方法:
想要支持下划线(_
)的headers fields
,就需要将underscores_in_headers
设置为on;默认是off
NGINX配置添加红框部分,并重启: