'requestmethodheadnotsupported'에 해당되는 글 1건

  1. 2023.03.14 org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'HEAD' not supported
Web&Spring2023. 3. 14. 16:01

뭐 겪어본 분들은 많이 겪은 일이지만..

CORS 정책에 걸렸을 수도있고..

서버 사이드에서 POST로 받게 해놓고 HEAD로 요청했었을수도 있다..

내 경우에는 GET으로 받아야하는데 HEAD로 요청한것..

이런경우에 해결법이 있는데..스프링 필터를 앞에 달고..

앞단의 Filter에서 GET으로 우회 처리를 한다.

 

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 ForceGetRequestWrapper(httpServletRequest), response);
        } else {
            chain.doFilter(request, response);
        }
    }

    public void destroy() {
    }

    
    private boolean isHttpHead(HttpServletRequest request) {
        return "HEAD".equals(request.getMethod());
    }

    private class ForceGetRequestWrapper extends HttpServletRequestWrapper {
        public ForceGetRequestWrapper(HttpServletRequest request) {
            super(request);
        }
         //HEAD 인경우 GET으로 돌린다.
        public String getMethod() {
            return "GET";
        }
    }
}

 

 

물론 정책 설정, 브라우저 설정 등 다른 방법으로 처리할수도 있으니, 필요에 따라 맞춰서 사용하면 될 것'-'

참조 : http://axelfontaine.com/blog/http-head.html

Posted by 사슴영혼'-'