在使用ProxyServlet对客户端发送的请求进行转发到另一个应用程序时,会发现HttpServletRequest并没有添加Header的方法,但是在某些场景我们需要这个方法,那么我们可以重写HttpServletRequestWrapper类中的String getHeader(String name)
、Enumeration<String> getHeaderNames()
、Enumeration<String> getHeaders(String name)
三个方法,并且自定义一个void addHeader(String name, String value)
来实现对HttpServletRequest的Header进行添加。
先上代码:
<!-- https://mvnrepository.com/artifact/org.mitre.dsmiley.httpproxy/smiley-http-proxy-servlet --> <dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> <artifactId>smiley-http-proxy-servlet</artifactId> <version>1.11</version> </dependency>
//MyHttpServletRequestWrapper.java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import java.util.*; public class MyHttpServletRequestWrapper extends HttpServletRequestWrapper { //存储要添加的请求头 private Map<String, String> extraHeaders; public MyHttpServletRequestWrapper(HttpServletRequest request) { super(request); this.extraHeaders = new HashMap<>(); } /** * 添加请求头 * @param name * @param value */ public void addHeader(String name, String value){ extraHeaders.put(name, value); } @Override public String getHeader(String name) { String value = super.getHeader(name); if (extraHeaders.containsKey(name)){ value = extraHe