Springboot löst Ajax Cross-Domain als Referenz. Der spezifische Inhalt ist wie folgt
1. Die erste Methode
1. Schreiben Sie eine Konfiguration, die Cross-Domain-Anforderungen unterstützt
import org.springframework.context.annotation.configuration; import org.springframework.web.servlet.config.annotation Levin * @time 2017-07-13 */ @configurationPublic class corsconfig erweitert webmvcconFigurerAdapter {statische endgültige String-Origins [] = new String [] {"get", "post", "put", "Delete"}; @Override public void addCorsMappings (CorsRegistry Registry) {Registry.AddmapPing ("/**"). DurlyOrigins ("*"). Zulassungszügige (wahr) .allowedMethods (Origins) .Maxage (3600); }}2. HTTP -Anforderungsschnittstelle
@RestControllerPublic Class HelloConTroller {@autowired HelloService HelloService; @Getmapping (value = "/test", procies = minytype.application_json_utf8_value) public String query () {return "hello"; }}2. Die zweite Methode (empfohlen)
PS: Der erste Typ hat ein Problem. Wenn der Server 500 läuft, gibt es immer noch ein Cross-Domain-Problem.
@SpringBootApplication@componentscan@enablediscoveryClientPublic Class ManagementApplication {public static void main (String [] args) {SpringApplication.run (ManagementApplication.Class, Args); } private corsConfiguration BuildConfig () {corsConfiguration corsConfiguration = new corsConfiguration (); corsConfiguration.addallowedErigin ("*"); corsConfiguration.addallowedHeader ("*"); corsConfiguration.addallowedMethod ("*"); corsConfiguration.addexposedheader (httpheaderstant.x_total_count); CorsConfiguration zurückgeben; } / ** * Cross-Domain-Filter * * @return * / @Bean public corsfilter corsfilter () {urlBasedCorsConFigurationSource Source = new urlBasedCorsConfigUrationsource (); Source.registerCorsConfiguration ("/**", BuildConfig ()); // 4 return New Corsfilter (Quelle); }}2. Index.html
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Cross-domain request</title><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function(){ $ ("button"). click (function () {$ .ajax ({url: "http: // localhost: 8080/test", Erfolg: Funktion (Ergebnis) {$ ("#p1"). Inhalt </button> </body> </html>3.. Der dritte Weg besteht darin, einen Filterfilter zu schreiben
package com.cci.market.common.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.servletResponse; import javax.servlet.http.httpserdresponse; import org.springframework.stereotype Init (FilterConfig FilterConfig) löst ServletException {} @Override public void dofilter (ServletRequest Req, ServletResponse Res, Filterchain -Kette) aus. response.setheader ("Access-Control-Allow-Origin", "*"); response.setheader ("Access-Control-Allow-Methoden", "Post, Get, Optionen, löschen, put"); response.setheader ("Access-Kontroll-Max-Alter", "3600"); Response.Setheader ("Access-Control-Allow-Header", "X-Requested-with"); chain.dofilter (req, res); } @Override public void desto4. Nginx Cross-Domain-Konfiguration
Die Nginx-Cross-Domäne ist ebenfalls relativ einfach. Fügen Sie einfach die folgende Konfiguration hinzu.
Ort/{proxy_pass http: // localhost: 8080; if ($ request_method = 'options') {add_header 'access-control-allow-origin' '*'; add_header 'access-control-tlow-methods' '' Get, post, option '; add_Header 'Access-Control-Allow-Header' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Equested-With, If-Modified-S-Since, Cache-Control, Content-Typ, Content-Range, Range, Token'; add_header 'Access-Kontroll-Max-Alter' 1728000; add_header 'content-Typ' 'text/plain; charset = utf-8 '; add_Header 'Inhaltslänge' 0; Rückkehr 204; } if ($ request_method = 'post') {add_header 'access-control-allow-origin' '*'; add_header 'access-control-tlow-methods' '' Get, post, option '; add_Header 'Access-Control-Allow-Header' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Equested-With, If-Modified-S-Since, Cache-Control, Content-Typ, Content-Range, Range, Token'; add_Header 'Access-Control-Expose-Header' '' DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Equested-With, If-Modified-Since, Cache-Control, Content-Typ, Content-Range, Range, Token '; } if ($ request_method = 'get') {add_header 'access-control-allow-origin' '*'; add_header 'access-control-tlow-methods' '' Get, post, option '; add_Header 'Access-Control-Allow-Header' 'DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Equested-With, If-Modified-S-Since, Cache-Control, Content-Typ, Content-Range, Range, Token'; add_Header 'Access-Control-Expose-Header' '' DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Equested-With, If-Modified-Since, Cache-Control, Content-Typ, Content-Range, Range, Token '; }}Wo: add_header 'Access-Control-Expose-Headers' addieren Sie unbedingt den Header, den Sie bei Ihrer Anforderung mitgebracht haben. Zum Beispiel wird das "Token" in diesem Beispiel tatsächlich vom vorderen Ende bis zum hinteren Ende übertragen. Es spielt keine Rolle, ob Sie sich nicht daran erinnern können, der Debugger des Browsers wird detaillierte Anweisungen haben.
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.