Spring Boot - поддержка CORS
Совместное использование ресурсов между источниками (CORS) - это концепция безопасности, которая позволяет ограничивать ресурсы, реализованные в веб-браузерах. Это предотвращает создание или использование кода JavaScript запросов от другого источника.
Например, ваше веб-приложение работает на порту 8080, и с помощью JavaScript вы пытаетесь использовать веб-службы RESTful с порта 9090. В таких ситуациях вы столкнетесь с проблемой безопасности совместного использования ресурсов между источниками в своих веб-браузерах.
Для решения этой проблемы необходимы два требования:
Веб-службы RESTful должны поддерживать совместное использование ресурсов между источниками.
Приложение веб-службы RESTful должно разрешать доступ к API через порт 8080.
В этой главе мы подробно узнаем о том, как включить запросы между источниками для приложения веб-службы RESTful.
Включить CORS в методе контроллера
Нам нужно установить источник для веб-службы RESTful, используя @CrossOriginаннотация для метода контроллера. Эта аннотация @CrossOrigin поддерживает определенный REST API, а не для всего приложения.
@RequestMapping(value = "/products")
@CrossOrigin(origins = "http://localhost:8080")
public ResponseEntity<Object> getProduct() {
return null;
}
Глобальная конфигурация CORS
Нам нужно определить показанную конфигурацию @Bean, чтобы глобально установить поддержку конфигурации CORS для вашего приложения Spring Boot.
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/products").allowedOrigins("http://localhost:9000");
}
};
}
Ниже приведен код для глобальной установки конфигурации CORS в основном приложении Spring Boot.
package com.tutorialspoint.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/products").allowedOrigins("http://localhost:8080");
}
};
}
}
Теперь вы можете создать веб-приложение Spring Boot, которое работает на порту 8080, и приложение веб-службы RESTful, которое может работать на порту 9090. Для получения дополнительных сведений о реализации веб-службы RESTful вы можете обратиться к главе под названиемConsuming RESTful Web Services этого учебника.