Lorsque nous devons fournir des services au monde extérieur grâce à l'interface RESTful, si l'architecture est séparée des extrémités avant et arrière à l'heure actuelle, cela impliquera des problèmes interdomains. Comment résoudre les problèmes de domaine croisé? Discutons de ce problème ci-dessous.
Solution 1: Ajouter une annotation @crossorigin sur le contrôleur
Comment l'utiliser est comme suit:
@Crossorigin // Méthode d'annotation @RestController public class HandlersCanController {@crossorigin (allowcedentials = "true", alloweheders = "*", méthodes = {requestMeth.get, requestMethod.post, requestMethod.delete, requestMeth.patch} ,head. origines = "*") @postmapping ("/ confirm") Handler de réponse publique (@Requestbody demande JSON) {return null; }} Solution 2: Configuration globale
Le code est le suivant:
@Configuration public class myConfiguration {@bean public webmvcconfigurer corsConfigurer () {return new WebMvcConfiGureAdapter () {@Override public void addCorsMappings (Corsrentinging Registry) {Registry.AddMapping ("/ **"). }}; }} Solution 3: Utiliser en combinaison avec le filtre
Dans la classe principale de Spring Boot, ajoutez un corsfilter
/ ** * * Attention: le domaine croisé simple est des demandes GET, tête et post, mais le "type de contenu" de la demande de poste ne peut être que l'application / x-www-form-urlencoded, multipart / form-data ou text / plain * Sinon, ce n'est pas un simple domaine croisé. Il existe un mécanisme pré-vol pour ce domaine croisé. Pour le dire franchement, il émettra deux demandes, une demande d'options et une vraie demande * / @Bean public corsFilter corsFilter () {final urlbasedCorsConfigurationsource source = new UrlBasedCorsConfigurationsource (); CORSCONFIGURATION FINAL CONFIG = NOUVEAU CORSCONFIGURATION (); config.setallowCredentials (true); // Permettez aux cookies de confier la configuration.AddallowEdorigin ("*"); // #Allowed Uri des demandes à ce serveur, * signifie tous autorisés. Dans SpringMvc, si elle est définie sur *, il sera automatiquement converti en config.AddallowedHeader ("*"); // #add pour accéder à l'en-tête, * signifie tout config.setMaxage (18000L); // Le temps de cache des demandes de Fillight (secondes), c'est-à-dire pendant cette période, config.addallowedMethod ("options"); // Méthodes qui permettent la soumission des demandes, * signifie que toutes autorisent Config.AddallowedMethod ("Head"); config.addallowedMethod ("get"); // permettre la méthode de demande de GET config.addallowedMethod ("put"); config.addallowedMethod ("post"); config.addallowedMethod ("Delete"); config.addallowedMethod ("patch"); Source.RegisterCorsConfiguration ("/ **", config); Renvoie un nouveau CORSFILTER (source); } Bien sûr, s'il existe de nombreux microservices, vous devez ajouter un tel morceau de code à la classe principale de chaque service, ce qui viole le principe sec. Une meilleure approche consiste à résoudre les problèmes de domaine croisé à la couche de passerelle de Zuul, une fois pour toutes.
Pour plus d'informations sur le domaine transversal frontal, veuillez vous référer à: http://www.vevb.com/article/83093.htm
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.