首页 > 解决方案 > 在过滤器中获取请求标头

问题描述

我在 Spring Boot 中注册了一个过滤器,并试图从请求中获取和 Header 但得到空值。

@Component
@Order(1)
public class ExampleFilter implements Filter {


     @Override
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws... {

         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
         //null**
         final String header = httpServletRequest.getHeader(HEADER);
     }

 @GetMapping(value = "example")
 public ResponseEntity<Example> example( @RequestHeader(HEADER) String header) {
      ... the header is NOT null
 }

标签: springspring-boot

解决方案


请在此处查看我的示例

@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CustomFilter implements Filter {

public CustomFilter() {
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) res;
    HttpServletRequest request = (HttpServletRequest) req;

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    Enumeration<String> headerNames = httpRequest.getHeaderNames();

    if (headerNames != null) {
        while (headerNames.hasMoreElements()) {
            String name = headerNames.nextElement();
            System.out.println("Header: " + name + " value:" + httpRequest.getHeader(name));
        }
    }


    chain.doFilter(req, res);
}

@Override
public void init(FilterConfig filterConfig) {
}

@Override
public void destroy() {
}
}

推荐阅读