Я добавил еще несколько деталей в ответ Божо для начинающих.
Иногда полезно позволить Spring Controller управлять запросом OPTIONS (например, чтобы установить правильный заголовок «Access-Control-Allow- *» для обслуживания вызова AJAX).
Однако, если вы попробуете обычную практику
@Controller
public class MyController {
@RequestMapping(method = RequestMethod.OPTIONS, value="/**")
public void manageOptions(HttpServletResponse response)
{
//do things
}
}
Это не будет работать, так как DispatcherServlet будет перехватывать клиентский запрос OPTIONS.
Обходной путь очень прост:
Вы должны ... настроить DispatcherServlet из файла web.xml следующим образом:
...
<servlet>
<servlet-name>yourServlet</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>
...
Добавление параметра "dispatchOptionsRequest" и установка его в значение true.
Теперь DispatcherServlet делегирует обработку OPTIONS вашему контроллеру, и будет выполняться метод manageOption ().
Надеюсь, это поможет.
PS. честно говоря, я вижу, что DispatcherServlet добавляет к ответу список разрешенных методов. В моем случае это было не важно, и я позволил этому уйти. Может быть, необходимы дальнейшие экзамены.