java 我们如何使用过滤器修改请求对象中的标头

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15294818/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 19:07:51  来源:igfitidea点击:

How we can modify headers in request Object using Filter

java

提问by Prateek Shrivastava

I need to create a Filter and modify header values set in request Object. How we can modify headers in request Object using Filter?, there is no setHeader method available in request Object.

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

回答by Rutesh Makhijani

You can use javax.servlet.http.HttpServletRequestWrapperto wrap the HttpServletRequestobject passed by the server.

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

In the wrapper class you need to override getHeadermethod and return modified value of header.

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

You can refer to similar post over here Modify request parameter with servlet filter

你可以参考这里的类似帖子用 servlet 过滤器修改请求参数

回答by Josh

You can import Collectors using

您可以使用

import java.util.stream.Collectors;

导入 java.util.stream.Collectors;

Add the method below into your class.

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

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

Then before returning headers in the response, you should ensure they are converted before returning by adding the following into the Controller of your Response method:

然后在响应中返回标头之前,您应该通过将以下内容添加到您的 Response 方法的控制器中来确保它们在返回之前被转换:

requestHeaders = convertRequestHeadersToLowerCase(requestHeaders);

requestHeaders = convertRequestHeadersToLowerCase(requestHeaders);