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