NGINX反向代理,header丢失的问题

1.问题:

请求的 header里传的值,直接通过IP访问可以获取到,通过域名(即NGINX)获取不到

        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        String loginToken = request.getHeader("AUTHORIZATION_TOKEN");
        logger.info("loginToken:" + loginToken);

2.原因:

默认情况下,并不是所有headersfields它都会转发,fields里带有下划线(_)的,Nginx视为不合法,自动抛弃不发了。例如:AUTHORIZATION_TOKEN

 

3.解决方法:

想要支持下划线(_)的headers fields,就需要将underscores_in_headers设置为on;默认是off

NGINX配置添加红框部分,并重启:

NGINX反向代理,header丢失的问题

 

上一篇:JavaWeb-03-Servlet-04-HttpServletResponse接口


下一篇:在拦截器种使用了request.getInputStream()或者getReader(),导致在controller中无法获取请求参数