Spring Boot - CORS-Unterstützung
Cross-Origin Resource Sharing (CORS) ist ein Sicherheitskonzept, mit dem die in Webbrowsern implementierten Ressourcen eingeschränkt werden können. Es verhindert, dass der JavaScript-Code die Anforderungen gegen unterschiedliche Herkunft erzeugt oder verbraucht.
Beispielsweise wird Ihre Webanwendung auf dem 8080-Port ausgeführt, und mithilfe von JavaScript versuchen Sie, RESTful-Webdienste über den 9090-Port zu nutzen. In solchen Situationen tritt in Ihren Webbrowsern das Sicherheitsproblem Cross-Origin Resource Sharing auf.
Um dieses Problem zu lösen, sind zwei Anforderungen erforderlich:
RESTful-Webdienste sollten die Cross-Origin-Ressourcenfreigabe unterstützen.
Die RESTful-Webdienstanwendung sollte den Zugriff auf die APIs über den 8080-Port ermöglichen.
In diesem Kapitel erfahren Sie ausführlich, wie Sie Cross-Origin-Anforderungen für eine RESTful-Webdienstanwendung aktivieren.
Aktivieren Sie CORS in der Controller-Methode
Wir müssen die Ursprünge für den RESTful-Webdienst mithilfe von festlegen @CrossOriginAnmerkung für die Controller-Methode. Diese @ CrossOrigin-Annotation unterstützt eine bestimmte REST-API und nicht für die gesamte Anwendung.
@RequestMapping(value = "/products")
@CrossOrigin(origins = "http://localhost:8080")
public ResponseEntity<Object> getProduct() {
return null;
}
Globale CORS-Konfiguration
Wir müssen die angezeigte @ Bean-Konfiguration definieren, um die CORS-Konfigurationsunterstützung global auf Ihre Spring Boot-Anwendung festzulegen.
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/products").allowedOrigins("http://localhost:9000");
}
};
}
Im Folgenden wird beschrieben, wie Sie die CORS-Konfiguration global in der Spring Boot-Hauptanwendung festlegen können.
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");
}
};
}
}
Jetzt können Sie eine Spring Boot-Webanwendung erstellen, die auf dem 8080-Port ausgeführt wird, und Ihre RESTful-Webdienstanwendung, die auf dem 9090-Port ausgeführt werden kann. Weitere Informationen zur Implementierung von RESTful Web Service finden Sie im Kapitel mit dem TitelConsuming RESTful Web Services dieses Tutorials.