Wenn wir durch die erholsame Schnittstelle Dienste für die Außenwelt anbieten müssen, wird die Architektur zu diesem Zeitpunkt von der Vorder- und Rückseite getrennt. Wie löste ich Cross-Domänen-Probleme? Lassen Sie uns dieses Problem unten diskutieren.
Lösung 1: Fügen Sie @crossorigin Annotation auf dem Controller hinzu
Wie man es benutzt, ist wie folgt:
@CrossOrigin // Annotation method @RestController public class HandlerScanController { @CrossOrigin(allowCredentials="true", allowedHeaders="*", methods={RequestMethod.GET, RequestMethod.POST, RequestMethod.DELETE, RequestMethod.OPTIONS, RequestMethod.HEAD, RequestMethod.PUT, RequestMethod.PATCH}, Origins = "*") @PostMapping ("/bestätigen") öffentliche Antworthandler (@RequestBody Request JSON) {return null; }} Lösung 2: Globale Konfiguration
Der Code ist wie folgt:
@Configuration Public Class MyConfiguration {@Bean public webmvcconFigurer corsconFiger () {return New WebMVCConFigurerAdapter () {@Override public void addCorsMappings (corsregistry Registry) {Registry.Addmaping ("**"). }}; }} Lösung 3: Verwenden Sie in Kombination mit Filter
Fügen Sie in der Hauptklasse des Springstiefels einen Corsfilter hinzu
/** * * Achtung: Einfacher Cross-Domain ist Get-, Kopf- und Postanfragen, aber der "Inhaltstyp" der Postanforderung kann nur Anwendung/x-www-form-rurgenkodiert sein, mehrteiler/Form-Daten oder Text/Ebene * ansonsten ist es nicht einfach. Für diese Kreuzdomäne gibt es einen Mechanismus vor dem Flug. Um es unverblümt auszudrücken, wird zwei Anfragen, eine Optionsanfrage und eine echte Anfrage*/ @Bean Public Corsfilter Corsfilter () {endgültige urlbasierte CorsConFigurationsource Source = new urlbasedCorsConfigurationsSource (); endgültige corsConfiguration config = new corsConfiguration (); config.setallowcredentials (true); // Cookies Cross-Domain config.addallowedErigin ("*"); // #low die URI von Anfragen an diesen Server, * bedeutet alle zulässig. Wenn in SpringMVC auf *eingestellt ist, wird es automatisch in Origin config.addallowedHeader (" *") konvertiert. // #ADD, um auf Header zuzugreifen, * bedeutet alle config.setMaxage (18000L); // Die Cache -Zeit der Vorfilsanforderungen (Sekunden), dh während dieses Zeitraums konfigurieren konfiguriert.addallowedMethod ("Optionen"); // Methoden, die die Einreichung von Anforderungen ermöglichen, bedeutet *, dass alle config.addallowedMethod ("Kopf") zulassen; config.addallowedMethod ("get"); // GET'S ANFORMENTHEITE CONFIG.AddallowedMethod ("put"); config.addallowedMethod ("post"); config.addallowedMethod ("delete"); config.addallowedMethod ("Patch"); Source.registerCorsConfiguration ("/**", config); Neue CorsFilter (Quelle) zurückgeben; } Wenn es viele Microservices gibt, müssen Sie der Hauptklasse jedes Dienstes, der gegen das Trockenprinzip verstößt, einen solchen Code hinzufügen. Ein besserer Ansatz ist es, Cross-Domänen-Probleme auf der Gateway-Schicht von Zuul ein für alle Mal zu lösen.
Weitere Informationen zu Front-End Cross-Domain finden Sie unter: http://www.vevb.com/article/83093.htm
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.