2016-10-29 2 views
1

나는 HTTP의 PROPFIND 요청하는 일부 클라이언트에 의한 내 스프링 MVC 응용 프로그램에서 오류를 많이 받고 있어요 39402 ERROR [foo.bar.controllers.ExceptionHandlingController] (default task-12) Uncaught Error : org.springframework.web.HttpRequestMethodNotSupportedException : 요청 메소드 'PROPFIND'가 지원되지 않음필터 특정 HTTP 동사는

각 컨트롤러에서 오류를 생성하지 않기 위해이 요청을 어떻게 필터링 할 수 있습니까?

감사합니다.

+0

내 대답은 도움이 되었습니까? – developer

답변

1

같은 것을 추가해야 web.xml의 옵션 관리에 봄 org.springframework.web.servlet.DispatcherServlet을 구성해야합니다.

RequestMethodInterceptor 클래스 :

package com.myproject.RequestMethodInterceptor; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class RequestMethodInterceptor implements HandlerInterceptor { 
    @Override 
    public boolean preHandle(HttpServletRequest request, 
      HttpServletResponse response, Object handler) throws Exception { 
     //Added PROPFIND method, add any other types NOT allowed 
     if(request.getMethod().equals("PROPFIND")) { 
      //Log or Ignore upon your requirement & return false 
      return false; 
     } else { 
      return true; 
     } 

    } 
} 

XML 구성 :

<mvc:interceptors> 
     <bean class="com.myproject.RequestMethodInterceptor" /> 
    </mvc:interceptors> 
+0

그리고 다른 알려지지 않은 메서드가 전송되면 코드를 변경해야합니다. 허용 된 사이트 목록이 좋습니다. 그렇습니까? – zeroflagL

+0

예, 맞습니다. 허용 목록을 만들고 유효성을 검사 할 수 있습니다. – developer

1

당신은 당신이 당신은 & 과정에 필요한 요청을 허용하도록 다음과 같이 봄의의 HandlerInterceptor를 사용할 수있는이

<servlet> 
    <servlet-name>springServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>dispatchOptionsRequest</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
+0

'OPTIONS'과'PROPFIND'는 정확히 무슨 관계가 있습니까? – zeroflagL

+0

나는 스프링 문서와 오래된 포럼에서 옵션을 활성화하는 것이 필요하다는 것을 알았다. 나는 그것을 시도한 적이 없지만 봄이 그렇다면 나는 그것을 믿는다. –

+1

_ "옵션을 활성화하는 것이 필요하다"_ 그러나 OP의 질문은 OPTIONS에 관한 것이 아닙니다. 더 중요하게 : OP는 요청을 처리하기를 원하지 않습니다. 그들은 요청을 버리기를 원합니다. – zeroflagL

관련 문제