Весна: состояние 405. Метод запроса POST не поддерживается.

Отправляю из формы действие на

<form name='recoverForm' action="<c:url value='recover'/>" method='POST'>

весна:

@Controller
@RequestMapping(value = "recover")
public class RecoverController {

    @RequestMapping(method = RequestMethod.GET)
    public String recoverPage(Map<String, Object> model) {
        return "recover"; //this works
    }

    @RequestMapping(method = RequestMethod.POST)
    public String recover(Map<String, Object> model) {
        System.out.println("_____________recover in action");
        return "home"; //error 405
    }

Но я получаю ошибку 405 - Метод запроса POST не поддерживается.

введите описание изображения здесь

Почему это? Я отправляю post request, а у контроллера есть метод отправки, не так ли?


person thinker    schedule 17.12.2016    source источник
comment
Ваш GET работает?   -  person timothyclifford    schedule 17.12.2016
comment
@timothyclifford да, это работает   -  person thinker    schedule 17.12.2016
comment
Когда ваше приложение запускается, видите ли вы, что маршрут POST отображается в журнале?   -  person timothyclifford    schedule 17.12.2016
comment
@timothyclifford не уверен, что ты имеешь в виду   -  person thinker    schedule 17.12.2016
comment
какую версию Spring вы используете?   -  person timothyclifford    schedule 17.12.2016
comment
@timothyclifford ‹org.springframework.version› 4.2.5.RELEASE ‹/org.springframework.version›   -  person thinker    schedule 17.12.2016
comment
как вы создаете и развертываете свое приложение?   -  person timothyclifford    schedule 17.12.2016
comment
@thinker Используете ли вы весеннюю безопасность с ‹csrf /›? если да, то используйте это ‹input type = hidden name = $ {_ csrf.parameterName} value = $ {_ csrf.token} /›   -  person David    schedule 17.12.2016
comment
@ Дэвид, я использую его в spring-sequrity.xml   -  person thinker    schedule 17.12.2016
comment
@ Дэвид помогло, спасибо   -  person thinker    schedule 17.12.2016


Ответы (1)


В Spring-security.xml <csrf />: защита Spring Security Cross Site Request Forgery (CSRF) блокирует его.

Токен требуется вместе с формой через запрос POST.

По форме добавьте следующее:

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
person David    schedule 17.12.2016
comment
не в `spring-sequrity.xml`, а в form на странице - person thinker; 17.12.2016