2

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

4

2 回答 2

4

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

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

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

于 2013-03-08T13:19:54.973 回答
-1

您可以使用导入收集器

导入 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);

于 2019-01-21T11:10:14.887 回答