latar belakang
Banyak proyek yang kami lakukan sekarang dipisahkan dari ujung depan dan belakang, yang mengarah ke masalah yang sangat umum. Halaman dan antarmuka kami berada di bawah nama domain yang berbeda. Ketika kita mengakses antarmuka backend melalui AJAX, masalah lintas domain akan muncul. Bagaimana kita bisa menyelesaikan masalah ini? Secara umum, ada dua solusi: CORS dan JSONP. Spring menyederhanakan konfigurasi COR, mari kita lihat COR yang disediakannya.
Deskripsi masalah silang domain
Pengembangan web sering mengalami masalah domain lintas, dan solusi meliputi: JSONP, iframe, CORS, dll.
CORS Dibandingkan dengan JSONP:
1. JSONP hanya dapat menerapkan permintaan GET, sementara CORS mendukung semua jenis permintaan HTTP.
2. Menggunakan CORS, pengembang dapat menggunakan XMLHTTPREQUEST biasa untuk memulai permintaan dan mendapatkan data, yang memiliki penanganan kesalahan yang lebih baik daripada JSONP.
3. JSONP terutama didukung oleh browser lama. Mereka sering tidak mendukung COR, dan sebagian besar browser modern sudah mendukung CORS.
Objek WebMVCConfigurer
Kami dapat menginisialisasi objek WebMVCConfigurer untuk mengonfigurasi pemetaan CORS kami.
@ConfigurationPublic Class Corscongiguration {@Bean PUBLIK WEBMVCCONFIGURER CORSCONFIGURER () {return New WebMvCconfigurerAdapter () {@Override public void addCorSmappings (CorsRegistry Registry) {registry.addmapping ("/API/API" "; // diizinkan ALME ("http://domain2.com") // Tentukan nama domain sumber // .AllowedMethods ("Put", "Delete") // .AllowedHeaders ("Header1", "Header2", "Header3") // .ExposedHeaders ("" header1, "header2", "header2") // .Allowcredentials (false) .Maxage (3600); }}; }}Mewarisi webmvcconfigurerAdapter
Metode ini sangat mirip dengan metode di atas
@Configuration @enableWebMvCpublic class Corsconfiguration_2 Memperluas WebMvCconfigurerAdapter {@Override public void addCorSmappings (CorsRegistry Registry) {registry.addmapping ("/API/**"); }}Corsfilter
Metode ini jarang digunakan sekarang
@Component@enableWebMvCpublic class Corsfiltercongiguration memperluas corsfilter {corsfiltercongiguration publik (corsconfigurationsource configSource) {super (configSource); } @Bean filter registrasi corsfilter () {urlbasedCorsConfigurationsource Source = UrlbasedCorsConfigurationsource baru (); 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 (corsfilter baru (sumber)); bean.setorder (0); // harus dikembalikan kacang sebelum semua filter; }}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.