Apa itu Cross-Origin Resource Sharing (CORS) – Bagaimana cara menambahkannya ke Server Web Java Jersey Anda?

Diterbitkan: 2014-07-19

Tutorial Berbagi Sumber Daya Lintas Asal (CORS) oleh Crunchify

Bagaimana cara memperbaiki kesalahan ini selama komunikasi client-server ? Server mengirimkan data dalam format JSON atau XML dan klien melempar di bawah pengecualian.

Halaman web biasa dapat menggunakan objek XMLHttpRequest untuk mengirim dan menerima data dari server jauh, tetapi dibatasi oleh kebijakan asal yang sama. Ekstensi tidak begitu terbatas. Ekstensi dapat berbicara dengan server jarak jauh di luar asalnya, selama ekstensi meminta izin lintas-asal terlebih dahulu.

Juga, jika Anda memiliki pertanyaan di bawah ini maka Anda berada di lokasi yang benar:

  1. Memahami Berbagi Sumber Daya Lintas Asal (Filter CORS)
  2. Dapatkah saya menggunakan Berbagi Sumber Daya Lintas-Asal
  3. Cara Mengaktifkan Berbagi Sumber Daya Lintas Asal
  4. Apa itu Cross-domain Ajax dengan Cross-Origin Resource Sharing
  5. Apa itu kontrol akses HTTP (CORS)

CORS (Cross Origin Resource Sharing) adalah mekanisme yang didukung oleh W3C untuk mengaktifkan permintaan lintas asal di browser web. CORS membutuhkan dukungan dari browser dan server untuk bekerja. Ini adalah implementasi filter Java Jersey Web Server dari CORS sisi server untuk wadah web seperti Apache Tomcat dan Server Web Tertanam lainnya.

Crunchify CORSFilter Jersey Server Contoh

Langkah 1:

Respons dapat menyertakan header Access-Control-Allow-Origin, dengan asal dari mana permintaan berasal sebagai nilai, untuk mengizinkan akses ke konten sumber daya. Agen pengguna memvalidasi bahwa nilai dan asal tempat permintaan berasal cocok.

Langkah 2:

Agen pengguna dapat mengetahui melalui permintaan preflight apakah sumber daya lintas asal disiapkan untuk menerima permintaan, menggunakan metode yang tidak sederhana, dari asal tertentu. Ini sekali lagi divalidasi oleh agen pengguna.

Langkah-3:

Aplikasi sisi server diaktifkan untuk menemukan bahwa permintaan HTTP dianggap sebagai permintaan lintas asal oleh agen pengguna, melalui header Asal. Ekstensi ini memungkinkan aplikasi sisi server untuk menerapkan batasan (misalnya tidak mengembalikan apa pun) pada permintaan lintas asal yang bersedia mereka layani.

Sekarang mari kita mulai dengan Contoh.

Contoh-1: Server Web Java Jersey

Beberapa minggu yang lalu saya menulis artikel tentang Cara Memulai Server HTTP Jersey Tertanam selama Startup Aplikasi Java. Posting ini akan membahas langkah-langkah tentang cara menambahkan Filter CORS ke Server Jersey yang sama.

Kita perlu memperluas ContainerResponseFilter. Antarmuka diimplementasikan oleh filter respons penampung. Secara default, yaitu jika tidak ada pengikatan nama yang diterapkan ke kelas implementasi filter, instance filter diterapkan secara global ke respons keluar apa pun.

Untuk memperbaikinya, mari coba tambahkan 4 header di bawah ini ke respons server:

  1. Akses-Kontrol-Izinkan-Asal
  2. Akses-Kontrol-Izinkan-Metode
  3. Akses-Kontrol-Maks-Usia
  4. Akses-Kontrol-Izinkan-Header

Kode Filter CORS:

Modifikasi JerseyEmbeddedHTTPServerCrunchify.java dari tutorial sebelumnya.

Cukup tambahkan baris di bawah ini di createHttpServer() dan restart server.

Hasil:

http://localhost:8085/api

Header Respon Crunchify Dengan Filter CORS

Berikut adalah detail Header.

Crunchify Response Header Tanpa Filter CORS

Contoh-2: Server HTTP Apache

Untuk mengekspos header, Anda dapat menambahkan baris berikut di dalam bagian <Directory>, <Location>, dan <Files>, atau di dalam file .htaccess .

Contoh-3: .NET server dapat mengkonfigurasi ini di web.config seperti di bawah ini

Contoh-4: Untuk Jetty (7 ke atas)

Sertakan JAR jetty-servlet ke dalam WEB-INF/lib Anda dan gabungkan ini ke dalam WEB-INF/web.xml Anda

Contoh-5: Apache Tomcat Server (v 7.0.41 +)

Contoh-6: Dalam PHP

Tolong beri tahu saya jika Anda memiliki pertanyaan lebih lanjut tentang ini. Daftar semua Tutorial Java akan ditemukan di sini.