Springboot memecahkan domain silang Ajax untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
1. Metode pertama
1. Tulis konfigurasi yang mendukung permintaan lintas domain
impor org.springframework.context.annotation.configuration; impor org.springframework.web.servlet.config.annotation.corsregistry; Impor org.springframework.web.servlet.config.annotation.webmvccconfigerfigurerAdapter; @Time 2017-07-13 */ @ConfigurationPublic Class CorsConfig Memperluas WebMvCconfigurerAdapter {Static Final String Origins [] = New String [] {"get", "Post", "put", "delete"}; @Override public void addCorSmappings (CorsRegistry Registry) {Registry.addmapping ("/**"). Diizinkan ALME ("*"). Allowcredentials (True) .AnvetedMethods (Origins) .Maxage (3600); }}2. Antarmuka Permintaan HTTP
@RestControllerPublic Class HelloController {@Autowired HelloService HelloService; @GetMapping (value = "/test", menghasilkan = mediatype.application_json_utf8_value) public string kueri () {return "hello"; }}2. Metode kedua (disarankan)
PS: Tipe pertama memiliki masalah. Ketika server melempar 500, masih ada masalah lintas domain.
@SpringbootApplication@componentscan@enableDiscoveryClientPublic Class ManagementApplication {public static void main (string [] args) {springApplication.run (manajemen aplikasi.class, args); } private corsconfiguration buildconfig () {corsconfiguration corsconfiguration = new corsconfiguration (); corsconfiguration.addallowedorigin ("*"); corsconfiguration.addallowedheader ("*"); corsconfiguration.addallowedmethod ("*"); corsconfiguration.addexposedHeader (httpheaderconstant.x_total_count); mengembalikan CorsConfiguration; } / ** * filter lintas-domain * * @return * / @bean corsfilter corsfilter () {urlbasedCorsConfigurationsource Source = UrlbasedCorsConfigurationsource (); Source.RegisterCorsConfiguration ("/**", buildConfig ()); // 4 return corsfilter baru (sumber); }}2. Index.html
<! Doctype html> <html> <head> <meta charset = "utf-8"> <itement> Permintaan silang </iteme> <script src = "https://cdn.bootcss.com/jquery/1.10.2/jquery.min.min.js"> </script> <crips> <crips> <crips> <crips> <cript> {function). $ ("Tombol"). Klik (fungsi () {$ .Ajax ({url: "http: // localhost: 8080/test", Success: function (hasil) {$ ("#p1"). html (hasil);}});});}); </script> </head> <body> <p1> <"p1> <" p1> </psript> </id} <"p1); Konten </button> </body> </html>3. Cara ketiga adalah dengan menulis filter filter
Paket com.cci.market.common.filter; impor java.io.ioexception; impor javax.servlet.filter; impor javax.servlet.filterchain; impor javax.servlet.filterconfig; impor javax.servlet.servletexception; impor javax.servax ;servax; SERServLETREVES; javax.servlet.servletResponse; import javax.servlet.http.httpservletResponse; impor org.springframework.stereotype./** * Tangani cross-domain masalah * @Author Mr.zheng * @date 2016/08/08 * */ @ init (filterconfig filterconfig) melempar servletException {} @Override public void dofilter (servletRequest req, servletResponse res, rantai filterchain) melempar ioException, servletException {httpservletResponse response = (httpservletseRse) response; httpservletsePonse = (httpservleServletse) response.setHeader ("Access-Control-Allow-Origin", "*"); response.setHeader ("Access-Control-Allow-Methods", "POST, GET, OPTION, DELETE, PUT"); response.setHeader ("Access-Control-Max-Age", "3600"); response.setHeader ("akses-kontrol-allow-headers", "X-requested-with"); rantai.dofilter (req, res); } @Override public void destrash () {// TODO Metode yang dihasilkan otomatis}}4. Konfigurasi lintas domain nginx
Nginx cross-domain juga relatif sederhana, cukup tambahkan konfigurasi berikut.
Lokasi/{proxy_pass http: // localhost: 8080; if ($ request_method = 'options') {add_header 'access-control-allow-origin' '*'; add_header 'akses-kontrol-alow-metode' 'dapatkan, posting, opsi'; Add_header 'Access-Control-Wallow-Headers' '' 'DNT, X-Customheader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, tipe konten, rentang konten, rentang, token'; Add_header 'Access-Control-Max-Age' 1728000; Add_header 'tipe konten' 'teks/polos; charset = UTF-8 '; add_header 'panjang konten' 0; kembali 204; } if ($ request_method = 'Post') {add_header 'access-control-allow-origin' '*'; add_header 'akses-kontrol-alow-metode' 'dapatkan, posting, opsi'; Add_header 'Access-Control-Wallow-Headers' '' 'DNT, X-Customheader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, tipe konten, rentang konten, rentang, token'; Add_header 'Access-Control-Expose-Headers' '' DNT, X-Customheader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Tipe Konten, Konten, Rentang, Token '; } if ($ request_method = 'get') {add_header 'access-control-allow-origin' '*'; add_header 'akses-kontrol-alow-metode' 'dapatkan, posting, opsi'; Add_header 'Access-Control-Wallow-Headers' '' 'DNT, X-Customheader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, tipe konten, rentang konten, rentang, token'; Add_header 'Access-Control-Expose-Headers' '' DNT, X-Customheader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Tipe Konten, Konten, Rentang, Token '; }}Di mana: add_header 'akses-kontrol-terpapar-headers' Pastikan untuk menambahkan header yang Anda bawa saat Anda meminta. Misalnya, "token" dalam contoh ini sebenarnya ditransmisikan dari ujung depan ke ujung belakang. Tidak masalah jika Anda tidak dapat mengingatnya, debugger browser akan memiliki instruksi terperinci.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.