Проблема с ответом корса (приложение POST/json). ошибка 400, неверный запрос

У меня есть код:

1) аякс

addFarmByPost = (e) => {
        e.preventDefault();
        alert(JSON.stringify(this.state));
        fetch("http://localhost:8080/farms", {
            method: "POST",
            headers: {
                'Content-Type': 'application/json'
            },

            data: JSON.stringify(this.state)
        })
    }

2) Контроллер отдыха

 @PostMapping("/farms")
    public ResponseEntity<Object> addFarm(@RequestBody String farmParam) {...//do }

3) Конфигурация Clobal cors в весеннем загрузочном приложении:

**@Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter(){
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedMethods("POST", "GET", "PUT", "DELETE", "OPTIONS")
                        .allowedOrigins("*")
                        .allowedHeaders("*")
                        .allowCredentials(false)
                        .maxAge(6000);

            }
        };
    }**

Но когда я делаю ajax POST-запрос (приложение/json), у меня есть исключение ошибка 400, неверный запрос. И исключение: Выполнение обработчика: org.springframework.http.converter.HttpMessageNotReadableException: отсутствует требуемый текст запроса.

Метод Get CORS работает хорошо. Как я могу это исправить и понять причину ошибки.Ты.

Проблема не в cors, как указывает исключение (необходимое тело запроса отсутствует), проблема в том, что Spring не может найти тело запроса для анализа. и почему вы используете тело как строку ??

Abdou Rayes 01.02.2019 15:58

Абду Райес, я использую строку, потому что мне нужно получить два java-объекта. Я могу сказать, что эта конфигурация работает хорошо, когда я не использую cors в своем приложении.

Евгений Трахимович 01.02.2019 16:03

можете ли вы изменить заголовок типа контента на приложение/текст

Abdou Rayes 01.02.2019 16:13

попробуйте настроить заголовок на text/plain, потому что установка заголовка на application/json заставит Spring искать соответствующий считыватель тела (в большинстве случаев это Jackson) и попытается преобразовать его в ваш целевой тип, в этом случае это String.class, и это будет вызвать ошибку (я полагаю, потому что я понятия не имею о содержимом this.state в этом случае)

mehdi maick 01.02.2019 16:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
616
1

Ответы 1

Исключением было то, что data: JSON.stringify(this.state) должен быть body: JSON.stringify(this.state). Поскольку я использую reactJS, я должен писать body, а не data в запросе ajax. Тай

Другие вопросы по теме