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.