我需要创建一个Filter并修改request Object中设置的头值。我们如何使用Filter?修改请求对象中的标头,请求对象中没有可用的setHeader方法。
答案 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);