Servlet Filter: How to get all the headers from servletRequest?

前端 未结 3 690
自闭症患者
自闭症患者 2020-12-24 00:35

Here is how my WebFilter looks like

@WebFilter(\"/rest/*\")
public class AuthTokenValidatorFilter implements Filter {

    @Override
    publi         


        
3条回答
  •  臣服心动
    2020-12-24 01:02

    With Java 8+ you can use a stream to collect request headers:

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    
    Map headers = Collections.list(httpRequest.getHeaderNames())
        .stream()
        .collect(Collectors.toMap(h -> h, httpRequest::getHeader));
    

    UPDATED

    @Matthias reminded me that headers can have multiple values:

    Map>

    Map> headersMap = Collections.list(httpRequest.getHeaderNames())    
        .stream()
        .collect(Collectors.toMap(
            Function.identity(), 
            h -> Collections.list(httpRequest.getHeaders(h))
        ));
    

    org.springframework.http.HttpHeaders

    HttpHeaders httpHeaders = Collections.list(httpRequest.getHeaderNames())
        .stream()
        .collect(Collectors.toMap(
            Function.identity(),
            h -> Collections.list(httpRequest.getHeaders(h)),
            (oldValue, newValue) -> newValue,
            HttpHeaders::new
        ));
    

    https://gist.github.com/Cepr0/fd5d9459f17da13b29126cf313328fe3

提交回复
热议问题