81,123
社区成员




public class HttpServletRequestCrossFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
ModifyHttpServletRequestWrapper httpServletRequestWrapper = new ModifyHttpServletRequestWrapper(request);
httpServletRequestWrapper.putHeader("Access-Control-Allow-Origin", "*");
httpServletRequestWrapper.putHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
httpServletRequestWrapper.putHeader("Access-Control-Allow-Headers", "Content-Type");
httpServletRequestWrapper.putHeader("xxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxx");
filterChain.doFilter(httpServletRequestWrapper, response);
}
}
public class ModifyHttpServletRequestWrapper extends HttpServletRequestWrapper {
private Map<String, String> customHeaders;
public ModifyHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
this.customHeaders = new HashMap<>();
}
public void putHeader(String name, String value) {
this.customHeaders.put(name, value);
}
public String getHeader(String name) {
String value = this.customHeaders.get(name);
if (value != null) {
return value;
}
return ((HttpServletRequest) getRequest()).getHeader(name);
}
public Enumeration<String> getHeaderNames() {
Set<String> set = new HashSet<>(customHeaders.keySet());
Enumeration<String> enumeration = ((HttpServletRequest) getRequest()).getHeaderNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
set.add(name);
}
return Collections.enumeration(set);
}
}
public class HttpServletRequestCrossFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
ModifyHttpServletRequestWrapper httpServletRequestWrapper = new ModifyHttpServletRequestWrapper(request);
httpServletRequestWrapper.putHeader("Access-Control-Allow-Origin", "*");
httpServletRequestWrapper.putHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
httpServletRequestWrapper.putHeader("Access-Control-Allow-Headers", "Content-Type");
httpServletRequestWrapper.putHeader("xxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxx");
filterChain.doFilter(httpServletRequestWrapper, response);
}
}
public class ModifyHttpServletRequestWrapper extends HttpServletRequestWrapper {
private Map<String, String> customHeaders;
public ModifyHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
this.customHeaders = new HashMap<>();
}
public void putHeader(String name, String value) {
this.customHeaders.put(name, value);
}
public String getHeader(String name) {
String value = this.customHeaders.get(name);
if (value != null) {
return value;
}
return ((HttpServletRequest) getRequest()).getHeader(name);
}
public Enumeration<String> getHeaderNames() {
Set<String> set = new HashSet<>(customHeaders.keySet());
Enumeration<String> enumeration = ((HttpServletRequest) getRequest()).getHeaderNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
set.add(name);
}
return Collections.enumeration(set);
}
}
public class WritableHttpServletRequest extends HttpServletRequestWrapper {
private final Set<String> names = new HashSet<>();
private final Map<String, String> headers = new HashMap<>();
WritableHttpServletRequest(HttpServletRequest request) {
super(request);
Enumeration<String> e = super.getHeaderNames();
while (e.hasMoreElements()) {
names.add(e.nextElement());
}
}
public void addHeader(String name, String value) {
headers.put(name, value);
names.add(name);
}
@Override
public String getHeader(String name) {
if (headers.containsKey(name)) {
return headers.get(name);
} else {
return super.getHeader(name);
}
}
@Override
public Enumeration<String> getHeaderNames() {
return Collections.enumeration(names);
}
}
// ......
WritableHttpServletRequest wr = new WritableHttpServletRequest(request);
wr.addHeader("Referer", "http://bbs.csdn.net");
doFilterInternal(wr, ...);
// ......
PrintWriter out = response.getWriter();
out.print(result);
package com.sandeepmore.filters;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
import java.util.logging.*;
public class MyFilterExample implements javax.servlet.Filter {
private ServletContext servletContext;
private Logger log;
public MyFilterExample(){
super();
}
public void init(FilterConfig filterConfig) throws ServletException {
servletContext = filterConfig.getServletContext();
log = Logger.getLogger(MyFilter.class.getName());
}
public void doFilter( ServletRequest req,
ServletResponse res,
FilterChain filterChain)
throws IOException, ServletException {
MyServletRequestWrapper httpReq = new MyServletRequestWrapper((HttpServletRequest)req);
HttpServletResponse httpRes = (HttpServletResponse)res;
HttpSession session = httpReq.getSession();
httpReq.addHeader("myHeader", "value");
filterChain.doFilter(httpReq, httpRes);
}
public void destroy(){
}
}