Spring Boot - Assistance CORS

Le partage de ressources inter-origines (CORS) est un concept de sécurité qui permet de restreindre les ressources implémentées dans les navigateurs Web. Cela empêche le code JavaScript de produire ou de consommer les requêtes contre des origines différentes.

Par exemple, votre application Web s'exécute sur le port 8080 et en utilisant JavaScript, vous essayez de consommer des services Web RESTful à partir du port 9090. Dans de telles situations, vous serez confronté au problème de sécurité du partage de ressources inter-origines sur vos navigateurs Web.

Deux conditions sont nécessaires pour gérer ce problème -

  • Les services Web RESTful doivent prendre en charge le partage de ressources inter-origines.

  • L'application de service Web RESTful doit permettre d'accéder aux API à partir du port 8080.

Dans ce chapitre, nous allons apprendre en détail comment activer les requêtes cross-origin pour une application de service Web RESTful.

Activer CORS dans la méthode du contrôleur

Nous devons définir les origines du service Web RESTful en utilisant @CrossOriginannotation pour la méthode du contrôleur. Cette annotation @CrossOrigin prend en charge une API REST spécifique, et non pour l'ensemble de l'application.

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

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

Configuration CORS globale

Nous devons définir la configuration @Bean affichée pour définir globalement la prise en charge de la configuration CORS pour votre application Spring Boot.

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

Le code pour définir la configuration CORS globalement dans l'application principale Spring Boot est indiqué ci-dessous.

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");
         }
      };
   }
}

Maintenant, vous pouvez créer une application Web Spring Boot qui s'exécute sur le port 8080 et votre application de service Web RESTful qui peut s'exécuter sur le port 9090. Pour plus de détails sur l'implémentation de RESTful Web Service, vous pouvez vous référer au chapitre intituléConsuming RESTful Web Services de ce tutoriel.