Как исправить HTTP Status 400 - Условия параметров не выполняются для фактических параметров запроса? - PullRequest
0 голосов
/ 08 июня 2019

У меня есть JSP-файл, который использует spring-form и spring mvc на бэкэнде.У меня есть 3 метода: 1. загрузить, 2. сохранить и 3. отменить.Форма имеет атрибут модели, установленный на некоторую форму (Java Bean), и все поля принадлежат форме, кроме типа файла.

Загрузка происходит правильно со следующим URL: https://localhost:8443/xyz/confgurePage.sp?method=load&csrfHandlingToken=9d123fc94968498db82fcc60a10e8637

Сопоставление запросов методов загрузки в серверной части выглядит следующим образом:

@ GetMapping (value = "/ confgurePage", params = {"method = load"}) public ModelAndView load (@ModelAttribute ("Form")Форма формы) Выдает исключение {}.

. Это прекрасно работает без каких-либо исключений, и я вижу, что JSP отображается правильно.

Далее у меня есть аналогичный запрос для методов сохранения и отмены, за исключением этого confgurePage.sp - это savePage.sp / cancelSave.sp для методов сохранения и отмены соответственно.

Теперь я изначально позволил методу сохранения быть таким же, как метод загрузки в бэкэнде, за исключением того, что это PostMapping - это привело к нулевому указателюисключение, где бы ни использовался файл (потому что у меня не было файла как части параметра запроса, есть также одно поле файла в форме bean-компонента, и я подумал, что это как-то отобразится: /).

Поэтому я изменил сопоставление моего запроса следующим образом:

@ PostMapping (value = "/ confgurePage", params = {"method = save", "csrfHandlingToken = *"}) public ModelAndView save(@ModelAttribute ("Form") Formform, @ RequestParam ("File") CommonsMultipartFile File) генерирует исключение {}

Также для метода загрузки я не включил токен csrf в параметры запроса, но он все еще работает нормальноно это не относится к методам сохранения и отмены.

Теперь с приведенным выше отображением запроса и URI запроса я получаю ошибку, как показано ниже:

HTTP Status 400 - Условия параметра "method =save, csrfHandlingToken = «ИЛИ» метод = отменить, csrfHandlingToken = «не выполнено для фактических параметров запроса: csrfHandlingToken = {140882ddd27540a8bf445e2ed1bded34, 140882ddd27540a8ed1}}, method = {cancel}

Также у меня настроена защита пружины, настроен фильтр детали Muiltp после фильтра безопасности пружины и токена csrf в запросе.

Любые указатели / помощь будут полезны

...