Hintergrund
Viele der Projekte, die wir jetzt durchführen, sind von vorne und hinten getrennt, was zu einem sehr häufigen Problem führt. Unsere Seiten und Schnittstellen stehen unter verschiedenen Domain -Namen. Wenn wir über AJAX auf die Backend-Schnittstelle zugreifen, treten Cross-Domänen-Probleme auf. Wie können wir dieses Problem lösen? Im Allgemeinen gibt es zwei Lösungen: CORS und JSONP. Spring vereinfacht die Konfiguration von CORs, schauen wir uns die CORS an, die es bietet.
Cross-Domain-Problembeschreibung
Die Webentwicklung begegnet häufig mit Cross-Domänen-Problemen, und Lösungen umfassen: JSONP, Iframe, CORS usw.
CORs im Vergleich zu JSONP:
1. JSONP kann nur GET -Anfragen implementieren, während CORS alle Arten von HTTP -Anforderungen unterstützt.
2. Mit CORs können Entwickler ordentliche XMLHTTPrequest verwenden, um Anforderungen zu initiieren und Daten zu erhalten, die eine bessere Fehlerbehandlung aufweisen als JSONP.
3. JSONP wird hauptsächlich von alten Browsern unterstützt. Sie unterstützen oft keine CORs und die meisten modernen Browser unterstützen bereits CORs.
WebMVCConFigurer -Objekt
Wir können ein WebMVCConFigurer -Objekt initialisieren, um unsere CORS -Mapping zu konfigurieren.
@ConfigurationPublic Class CorsCongiguration {@Bean public webmvcconfigurer corsconFigurer () {Neue webmvcconFigurerAdapter () {@Override public void void addCorsMappings (CorsRegistry Registry) {Registry.addmaping ("/api/**"); // erlaubte ("http://domain2.com") // Geben Sie den Quelldomain -Namen an // .allowedMethods ("put", "löschen") // .allowedheaders ("Header1", "Header2", "Header3") // .exponierteheaders ("Header1", "Header2) //. }}; }}Inherit webmvcconFigurerAdapter
Diese Methode ist der obigen Methode sehr ähnlich
@Configuration @enableWebmVCPublic Class CorsConfiguration_2 erweitert WebMVCConFigurerAdapter {@Override public void addCorsMappings (CorsRegistry -Registrierung) {Registry.addmapping ("/api/**"); }}Corsfilter
Diese Methode wird jetzt selten verwendet
@Component@enableWebmvcPublic -Klasse CorsFilterCongiguration erweitert Corsfilter {public corsFilterCongiguration (corsconfigurationsOrce configsource) {Super (configSource); } @Bean public filterregistrationBean corsfilter () {urlBasedCorsConfigurationsource Source = new urlBasedCorsConFigurationsource (); CorsConfiguration config = new corsConfiguration (); config.setallowcredentials (true); config.addallowedOrigin ("*"); // config.addallowedorigin ("http://domain1.com"); config.addallowedHeader ("*"); config.addallowedMethod ("*"); Source.registerCorsConfiguration ("/api/**", config); FilterregistrationBean bean = new FilterregistrationBean (New Corsfilter (Quelle)); Bean.setOrder (0); // muss vor allen Filtern zurückgegeben werden; }}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.