복붙노트

[SPRING] Spring 3.0 HEAD 요청

SPRING

Spring 3.0 HEAD 요청

최근에 우리는 다음과 같이 스프링 3.0 컨트롤러 처리로 옮겼습니다.

@Controller
public class MyController {
   @RequestMapping(method = RequestMethod.POST)
   protected String onSubmit ( Form form, Errors errors) {
        // handle POST
   }

   @RequestMapping(method = RequestMethod.GET)
   protected void getForm ( Form form ) {
     // handle GET
   }
}

이제 HEAD 요청으로 인해 로그에 많은 예외가 발생합니다.

org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'HEAD' not supported
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodResolver.resolveHandlerMethod(AnnotationMethodHandlerAdapter.java:621)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:422)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:415)
    ...

GET 요청과 같은 방식으로 HEAD 요청을 지원하고 싶지만 물론 HTTP 참조를 준수하고 싶습니다.

우아한 솔루션을 가진 사람이 있습니까? 아니면 즉시 스프링 솔루션이 있습니까?

웹을 검색했지만 이에 대한 답변을 찾지 못했습니다.

해결법

  1. ==============================

    1.나는 이것이 당신이 찾고있는 것이라고 믿습니다. http://www.axelfontaine.com/2009/09/transparently-supporting-http-head.html

    나는 이것이 당신이 찾고있는 것이라고 믿습니다. http://www.axelfontaine.com/2009/09/transparently-supporting-http-head.html

  2. ==============================

    2.HEAD를 지원되는 메소드로 요청 맵핑에 추가하십시오.

    HEAD를 지원되는 메소드로 요청 맵핑에 추가하십시오.

    @RequestMapping(method = {RequestMethod.GET, RequestMethod.HEAD})
    

    업데이트 : AnnotationMethodHandlerAdapter를 dispatcher-servlet.xml의 메소드 핸들러로 확장하고 HEAD 지원 확인을 우회하는 사용자 정의 클래스를 제공 할 수 있다고 생각합니다. 그러나 IDE의 교체 기능을 사용하여 추가합니다.

  3. ==============================

    3.현재 Spring (4.3.10)에서는 HEAD가 자동으로 지원됩니다.

    현재 Spring (4.3.10)에서는 HEAD가 자동으로 지원됩니다.

    https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-requestmapping-head-options

  4. from https://stackoverflow.com/questions/3803015/spring-3-0-head-requests by cc-by-sa and MIT license