我们如何使用Filter修改请求对象中的标头

时间:2013-03-08 13:13:51

标签: java

我需要创建一个Filter并修改request Object中设置的头值。我们如何使用Filter?修改请求对象中的标头,请求对象中没有可用的setHeader方法。

2 个答案:

答案 0 :(得分:2)

您可以使用javax.servlet.http.HttpServletRequestWrapper来包装服务器传递的HttpServletRequest对象。

在包装器类中,您需要覆盖getHeader方法并返回标头的修改值。

您可以在此处参考类似的帖子Modify request parameter with servlet filter

答案 1 :(得分:0)

您可以使用导入收集器

  

导入java.util.stream.Collectors;

将以下方法添加到您的类中。

private Map<String, String> convertHeadersToLowerCase(Map<String, String> headers) {
    return headers
            .entrySet()
            .stream()
            .collect(Collectors.toMap(entry -> entry.getKey().toLowerCase(), entry -> entry.getValue()));
}

然后,在返回响应中的标头之前,应通过将以下内容添加到Response方法的Controller中,确保返回前已转换标头:

  

requestHeaders = convertRequestHeadersToLowerCase(requestHeaders);