tggm
tggm

Reputation: 1023

Filter specific HTTP verbs in spring mvc

I'm getting a lot of errors in my spring MVC app caused by some clients requesting HTTP PROPFIND:

16:59:39,402 ERROR [foo.bar.controllers.ExceptionHandlingController] (default task-12) Uncaught Error: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'PROPFIND' not supported

How can I filter this requests so that they don't generate an error in each controller ?

Thanks!

Upvotes: 2

Views: 962

Answers (2)

Vasu
Vasu

Reputation: 22422

You can use Spring's HandlerInterceptor as below to allow & process the required requests.

RequestMethodInterceptor class:

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 Configuration:

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

Upvotes: 1

Angelo Immediata
Angelo Immediata

Reputation: 6944

You have to configure the spring org.springframework.web.servlet.DispatcherServlet in managing OPTIONS In the web.xml you should add something like this

  <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>

Upvotes: 1

Related Questions