0
我需要创建一个Filter来捕获所有的HEAD请求并将返回状态200。强制Spring在HEAD请求上返回状态200
正如我所承认的,我需要创建一个Filter来捕获每个HEAD请求,并完成每个请求,并返回200,这是一个问题。
我的意思是过滤器捕获请求,并能够做一些事情,但我不需要一个请求,但一个响应将是200.那么我还能做什么?
public class HttpHeadFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
if (isHttpHead(httpServletRequest)) {
chain.doFilter(new ForceHeadToOkStatusWrapper (httpServletRequest), response);
} else {
chain.doFilter(request, response);
}
}
public void destroy() {
}
private boolean isHttpHead(HttpServletRequest request) {
return "HEAD".equals(request.getMethod());
}
private class ForceHeadToOkStatusWrapper extends HttpServletRequestWrapper {
public ForceGetRequestWrapper(HttpServletRequest request) {
super(request);
}
//somethig here
}
}
为什么这么复杂?为什么你甚至需要调用'doFilter'?使用'response.setStatus(200)'并且不要调用'doFilter'。 –
是的,这是寻找。我们可以发送回应而不处理请求。 :) – ottercoder