Berbagi Sumber Daya Lintas Domain (CORS) merupakan kebijakan keamanan penting yang memungkinkan server aplikasi web mengontrol akses lintas domain, sehingga mendukung transmisi data lintas domain yang aman. Instans API Gateway berbasis cloud-native memungkinkan Anda mengonfigurasi kebijakan CORS pada tingkat entri rute, sehingga Anda dapat mengizinkan akses ke sumber daya dari nama domain tertentu menggunakan metode permintaan tertentu sesuai kebutuhan bisnis. Hal ini membantu mencegah risiko keamanan seperti pemalsuan permintaan lintas situs (CSRF) serta menjamin keandalan dan keamanan layanan.
Mengonfigurasi kebijakan berbagi sumber daya lintas domain
API Gateway berbasis cloud-native menyediakan dua cara untuk mengonfigurasi kebijakan CORS: di luar instans dan di dalam instans:
API di luar instans
Masuk ke Konsol Cloud-native API Gateway. Di panel navigasi sebelah kiri, pilih API, lalu pilih wilayah di bilah menu atas.
Klik API target. Anda dapat memilih instans tempat Anda ingin mengonfigurasi kebijakan CORS dari daftar tarik-turun atau memilih All Instances.

Pilih entri rute target dari Route List.
API di dalam instans
Masuk ke Konsol Cloud-native API Gateway. Di panel navigasi sebelah kiri, pilih Instance, lalu pilih wilayah di bilah menu atas.
Di halaman Instance, klik ID instans gerbang target. Di panel navigasi sebelah kiri, pilih API, kemudian klik API target.
Pilih entri rute target dari Route List.
Klik tab Policy Configuration, lalu klik Inbound Processing dan Enable Policy/Plugin.
Klik kartu CORS. Di panel Add Policy: CORS, konfigurasikan parameter, lalu klik Add.
CatatanKebijakan CORS tidak berlaku untuk layanan mock. Anda harus mengonfigurasi layanan pengujian backend yang sebenarnya.
Item Konfigurasi
Deskripsi
Enable
Nyalakan sakelar di sebelah kanan Enable.
Jika Anda mengaktifkan kebijakan, permintaan CORS diizinkan berdasarkan kebijakan tersebut.
Jika Anda menonaktifkan kebijakan, semua permintaan CORS ditolak.
Allowed Origins
Nama domain yang diizinkan mengakses sumber daya di server melalui browser. Aturan konfigurasi:
Untuk mengizinkan semua asal:
*.Untuk mengizinkan asal dari domain root tertentu:
*.example.com.Untuk menentukan beberapa asal: Masukkan asal yang dimulai dengan
http://atauhttps://, dengan setiap asal pada baris terpisah.
CatatanParameter ini berlaku untuk header
Access-Control-Allow-Origin. Ketika header Origin dalam permintaan klien cocok dengan salah satu asal yang diizinkan yang Anda tetapkan, headerAccess-Control-Allow-Origindalam tanggapan lintas domain akan diatur ke header Origin dalam permintaan klien.Allowed Methods
Metode HTTP yang diizinkan untuk permintaan CORS. Metode umum meliputi GET, POST, PUT, DELETE, HEAD, OPTIONS, dan PATCH.
CatatanParameter ini berlaku untuk header Access-Control-Allow-Methods.
Allowed Request Headers
Header tambahan yang diizinkan dalam permintaan CORS selain header bawaan browser web. Aturan konfigurasi:
Untuk mengizinkan semua header permintaan:
*.Untuk menentukan beberapa header permintaan, masukkan setiap header permintaan pada baris terpisah.
CatatanParameter ini berlaku untuk header Access-Control-Allow-Headers.
Allowed Response Headers
Header respons yang dapat diperoleh oleh browser dan file JavaScript. Aturan konfigurasi:
Untuk mengizinkan semua header respons:
*.Untuk menentukan beberapa header respons, masukkan setiap header respons pada baris terpisah.
CatatanParameter ini berlaku untuk header Access-Control-Expose-Headers.
Allow Credentials
Menentukan apakah kredensial diizinkan dalam permintaan CORS.
CatatanParameter ini berlaku untuk header Access-Control-Allow-Credentials.
Preflight Max Age
Periode maksimum waktu selama permintaan preflight yang menggunakan metode OPTIONS disimpan dalam cache.
CatatanParameter ini berlaku untuk header Access-Control-Max-Age.
Verifikasi hasil
Jalankan perintah berikut untuk mengirim permintaan pengujian:
curl -I -H "Origin: http://example.com" -H "Access-Control-Request-Method: GET" -H 'Host: www.test.com' -X OPTIONS http://121.196.XX.XX/demo/item/listKeluaran yang diharapkan:
HTTP/1.1 200 OK allow: GET,HEAD,OPTIONS x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-length: 0 date: Tue, 30 Nov 2021 03:20:31 GMT x-envoy-upstream-service-time: 6 access-control-allow-origin: http://example.com access-control-allow-credentials: true access-control-allow-methods: GET,POST,PUT,DELETE,HEAD,OPTIONS access-control-expose-headers: * server: istio-envoy
Referensi
Untuk informasi lebih lanjut, lihat Berbagi sumber daya lintas domain.