Spring PostMapping вернет 401 без тела - PullRequest
0 голосов
/ 10 октября 2018

Я хочу сделать Post для записи некоторых данных в базу данных, но вся необходимая информация хранится на сервере, поэтому моя служба Post не требует тела:

@PostMapping("foo")
public @ResponseBody 
RestResponse writeFoo() {
    // WRITE AND RETURN
}

Если яПопробуйте отправить запрос в эту службу, я получу 401, даже если я передам действительный токен.Если я изменю свою выставленную услугу на GetMapping, все будет работать как положено.Кажется, что я не могу обработать запрос Post с пустым телом.

Я пытался добавить некоторые фиктивные параметры как

RestResponse writeFoo(@RequestBody(required = false) String fake)

, но безуспешно.

Есть идеи?

1 Ответ

0 голосов
/ 10 октября 2018

Проблема, которую вы объясняете, чаще всего является причиной неправильной (или отсутствующей?) Конфигурации.

Обратите внимание, что, например, метод GET разрешен по умолчанию вашим REST API, в то время как вам нужно указать другие типы методов.(т. е. PUT и POST), в противном случае он не будет работать «из коробки» из-за CORS.

Часть, где метод GET работает, а метод POST - нет, является сильным указанием на отсутствие / неправильную конфигурацию CORS.Вы можете быстро исправить это, добавив фильтр CORS и настроив заголовки ответов.

Официальная документация должна дать вам хорошее начало, если вы не знаете, где искать: Spring docs - включениеCORS

ОБНОВЛЕНИЕ:

Проблема успешно решена, проверьте раздел комментариев для получения дополнительной информации.Короткая история - внутренняя конфигурация для токена CORS / CSRF была настроена правильно в данном конкретном случае, проблема возникла из-за отсутствия заголовка (токена CSRF) в угловой / интерфейсной части веб-приложения.

...