Cross-Origin Resource Sharing (CORS) — это концепция безопасности, которая позволяет ограничивать ресурсы, реализованные в веб-браузерах. Это предотвращает создание или использование кода JavaScript запросов различного происхождения.
Например, ваше веб-приложение работает на порту 8080, и с помощью JavaScript вы пытаетесь использовать веб-службы RESTful с порта 9090. В таких ситуациях вы столкнетесь с проблемой безопасности перекрестного общего доступа к ресурсам в своих веб-браузерах.
Для решения этой проблемы необходимы два требования:
-
Веб-службы RESTful должны поддерживать общий доступ к ресурсам.
-
Приложение веб-службы RESTful должно разрешать доступ к API-интерфейсу через порт 8080.
Веб-службы RESTful должны поддерживать общий доступ к ресурсам.
Приложение веб-службы RESTful должно разрешать доступ к API-интерфейсу через порт 8080.
В этой главе мы подробно узнаем о том, как включить перекрестные запросы для приложения веб-службы RESTful.
Включить CORS в методе контроллера
Нам нужно установить происхождение для веб-сервиса RESTful, используя аннотацию @CrossOrigin для метода контроллера. Эта аннотация @CrossOrigin поддерживает определенный API REST, а не для всего приложения.
@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 вы можете обратиться к главе « Использование веб-служб RESTful» этого руководства.