Я использую React во внешнем интерфейсе и Spring Boot в серверной части и получаю сообщение об ошибке - PullRequest
0 голосов
/ 05 августа 2020

Это код на стороне Spring Boot:

class FruitWrapper{

    List<String> fruits;
  }
class HelloController {
    @PostMapping("/")
    public String hello(@RequestBody FruitWrapper fruits)
     {
        System.out.println(fruits);
    
       return "he";
     }

    }

Я отправляю запрос от реакции следующим образом:

 axios.post(`${COURSE_API_URL}`,{"fruits":["apple","orange"]})
.then(resp{console.log(resp.data)})

Ошибка:

 Access to XMLHttpRequest at 'http://localhost:8081/' from origin 'http://localhost:3000'         has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

1 Ответ

1 голос
/ 05 августа 2020

Это происходит из-за политики происхождения CORS. Вам необходимо включить CORS на стороне вашего сервера. Чтобы установить источник для веб-службы RESTful с помощью аннотации @CrossOrigin для метода контроллера. Эта аннотация @CrossOrigin поддерживает определенный c REST API, а не для всего приложения.

@RequestMapping(value = "/products")
@CrossOrigin(origins = "http://localhost:8080")

public ResponseEntity<Object> getProduct() {
   return null;
}

Глобальная конфигурация CORS

@Bean
public WebMvcConfigurer corsConfigurer() {
   return new WebMvcConfigurerAdapter() {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/products").allowedOrigins("http://localhost:9000");
      }    
   };
}

источник: https://www.tutorialspoint.com/spring_boot/spring_boot_cors_support.htm

...