Ketika kita perlu memberikan layanan ke dunia luar melalui antarmuka yang tenang, jika arsitektur dipisahkan dari ujung depan dan belakang saat ini, itu akan melibatkan masalah domain silang. Bagaimana cara menyelesaikan masalah domain lintas? Mari kita bahas masalah ini di bawah ini.
Solusi 1: Tambahkan anotasi @crossorigin pada pengontrol
Cara menggunakannya adalah sebagai berikut:
@Crossorigin // metode anotasi @restcontroller kelas publik handlerscancontroller {@crossorigin (allowcredentials = "true", diizinkanHeaders = "*", Metode = {requestMethod.get, requestMethod.post, requestMethod.delete, requestMethod.opethod. origins = "*") @PostMapping ("/confirm") Public Response Handler (@RequestBody meminta json) {return null; }} Solusi 2: Konfigurasi Global
Kodenya adalah sebagai berikut:
@Configuration Public Class MyConfiguration {@Bean Public WebMVCConfigurer CorsConfigurer () {return baru webmvcconfigurerAdapter () {@Override public void addCorSmappings (corsregistry registry) {registry.addmapping ("/**). }}; }} Solusi 3: Gunakan dalam kombinasi dengan filter
Di kelas utama boot musim semi, tambahkan corsfilter
/** * * Perhatian: Domain silang sederhana adalah permintaan, head dan post, tetapi "tipe konten" dari permintaan pos hanya dapat berupa aplikasi/X-www-form-urlencoded, multipart/-data atau teks/polos * jika tidak, itu bukan domain silang sederhana. Ada mekanisme pra-penerbangan untuk domain silang ini. Terus terang, itu akan mengeluarkan dua permintaan, satu permintaan opsi, dan satu permintaan nyata*/ @bean public corsfilter corsfilter () {final urlbasedCorsConfigurationsource Source = UrlbasedCorScorConfigurationSource baru (); Konfigurasi CorsConfiguration akhir = corsconfiguration baru (); config.setallowcredentials (true); // Izinkan cookie untuk cross-domain config.addallowedorigin ("*"); // #Annowed URI Permintaan ke server ini, * berarti semua diizinkan. Di SpringMVC, jika diatur ke *, itu akan secara otomatis dikonversi ke asal konfigurasi.addallowedHeader (" *"); // #Add untuk mengakses header, * berarti semua config.setmaxage (18000L); // Waktu cache permintaan preflight (detik), yaitu selama periode waktu ini, config.addallowedmethod ("opsi"); // Metode yang memungkinkan pengiriman permintaan, * berarti semua mengizinkan config.addallowedmethod ("head"); config.addallowedmethod ("get"); // izinkan metode permintaan get config.addallowedmethod ("put"); config.addallowedmethod ("post"); config.addallowedmethod ("delete"); config.addallowedmethod ("patch"); Source.RegisterCorsConfiguration ("/**", config); mengembalikan corsfilter baru (sumber); } Tentu saja, jika ada banyak layanan microser, Anda perlu menambahkan sepotong kode seperti itu ke kelas utama setiap layanan, yang melanggar prinsip kering. Pendekatan yang lebih baik adalah memecahkan masalah domain lintas di lapisan gateway Zuul, sekali dan untuk semua.
Untuk informasi lebih lanjut tentang cross-domain front-end, silakan merujuk ke: http://www.vevb.com/article/83093.htm
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.