Cara menyelesaikan masalah akses merentas domain dalam pembangunan Java
Dalam pembangunan aplikasi web semasa, trend pemisahan bahagian hadapan dan belakang semakin jelas. Ini bermakna kod bahagian hadapan dan bahagian belakang dikendalikan oleh pasukan pembangunan yang berbeza, dan ia biasanya dijalankan pada pelayan yang berbeza. Walau bagaimanapun, disebabkan dasar keselamatan penyemak imbas, akses merentas domain akan dihadkan. Akses merentas domain merujuk kepada meminta sumber di bawah nama domain lain daripada halaman web di bawah satu nama domain, seperti meminta data daripada api.example.com daripada halaman di www.example.com.
Pemaju Java sering menghadapi masalah ini semasa proses pembangunan: apabila kod bahagian hadapan dijalankan di bawah satu nama domain, dan antara muka bahagian belakang berjalan di bawah nama domain lain, bagaimana untuk menyelesaikan masalah akses merentas domain? Artikel ini akan memperkenalkan beberapa penyelesaian yang biasa digunakan.
1. Benarkan akses merentas domain melalui tetapan pelayan
Ini ialah kaedah yang paling biasa untuk menyelesaikan masalah merentas domain. Masalah merentas domain boleh diselesaikan dengan mengkonfigurasi pada pelayan bahagian belakang untuk membenarkan nama domain atau alamat IP tertentu untuk mengakses antara muka. Sebagai contoh, dalam Java, anda boleh menetapkan nama domain yang dibenarkan dengan menambahkan anotasi berikut pada kelas Pengawal:
@CrossOrigin(origins = "http://www.example.com")
Dengan cara ini, bahagian hadapan -halaman akhir mengakses antara muka hujung belakang tidak lagi tertakluk kepada sekatan merentas domain.
2. Gunakan JSONP (JSON dengan Padding)
JSONP ialah penyelesaian akses merentas domain yang mudah digunakan. Ia mencipta teg skrip di halaman hujung hadapan, menunjuk ke antara muka bahagian belakang, dan kemudian membungkus data yang dikembalikan ke dalam panggilan fungsi di bahagian belakang. Sebagai contoh, halaman hadapan boleh memanggil antara muka belakang seperti ini:
<script></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:java;toolbar:false;'>function callback(data){
//处理返回的数据
}</pre><div class="contentsignin">Salin selepas log masuk</div></div><p></script>
Pada masa ini, data yang dikembalikan oleh bahagian belakang akan dibalut dalam fungsi panggil balik dan halaman hujung hadapan boleh mendapatkan data melalui fungsi panggil balik.
3. Gunakan pelayan proksi
Satu lagi cara biasa untuk menyelesaikan masalah merentas domain ialah menggunakan pelayan proksi. Dengan menambahkan pelayan proksi pada projek, permintaan daripada halaman hadapan dimajukan ke nama domain antara muka belakang. Dengan cara ini, halaman hadapan boleh berkomunikasi dengan bahagian belakang melalui pelayan proksi di bawah nama domain yang sama, mengelakkan masalah merentas domain. Pelayan proksi biasa termasuk Nginx dan Apache.
4. Hasilkan pengepala respons perkongsian sumber merentas domain (CORS) pada bahagian belakang
CORS ialah mekanisme baharu dalam HTML5 untuk menyelesaikan masalah akses merentas domain. Dengan menjana pengepala respons CORS pada bahagian belakang, anda memberitahu penyemak imbas bahawa antara muka boleh diakses oleh nama domain yang ditentukan. Di Java, anda boleh menjana pengepala respons CORS dengan menambahkan anotasi berikut pada kaedah antara muka bahagian belakang:
@CrossOrigin(origins = "http://www.example.com")
5 Gunakan protokol WebSocket
WebSocket protokol Ia adalah protokol untuk komunikasi dua hala pada satu sambungan jangka panjang Ia boleh memintas dasar asal yang sama pelayar dan mencapai akses merentas domain. Terdapat banyak rangka kerja WebSocket yang matang di Jawa, seperti pelaksanaan WebSocket Netty dan Tomcat.
Ringkasan:
Terdapat banyak cara untuk menyelesaikan masalah akses merentas domain dalam pembangunan Java Kita boleh memilih penyelesaian yang sesuai mengikut situasi tertentu. Melalui tetapan pelayan, JSONP, pelayan proksi, protokol CORS dan WebSocket, kami boleh menyelesaikan masalah akses merentas domain dalam pembangunan pemisahan bahagian hadapan dan belakang serta meningkatkan keselamatan dan kebolehpercayaan aplikasi.
Atas ialah kandungan terperinci Menyelesaikan isu merentas domain Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!