Berbagi sumber daya lintas domain (CORS) mengontrol origin eksternal mana yang dapat mengakses resource API Anda melalui browser. Cloud-native API Gateway mendukung kebijakan CORS tingkat entri rute yang memungkinkan Anda membatasi origin, metode HTTP, dan header yang diizinkan.
Prosedur
-
Cloud-native API Gateway menyediakan dua cara untuk mengonfigurasi kebijakan CORS:
API di luar instans
-
Masuk ke Konsol Cloud-native API Gateway. Di panel navigasi sebelah kiri, pilih API, lalu pilih wilayah.
-
Klik API target. Dari daftar drop-down instans, pilih instans target atau All instances.
-
Pilih entri rute target dari daftar Routes.
API di dalam instans
-
Masuk ke Konsol Cloud-native API Gateway. Di panel navigasi sebelah kiri, pilih Instance, lalu pilih Wilayah.
-
Pada halaman Instance, klik instans target. Di panel navigasi sebelah kiri, pilih API, lalu klik API target.
-
Pilih entri rute target dari daftar Routes.
-
-
Klik tab Configure Policy, lalu klik Enable Policy/Plug-in di bagian Inbound Processing.
-
Klik kartu CORS. Di panel Add Policy: CORS, konfigurasikan parameter, lalu klik Add.
CatatanKebijakan CORS tidak berlaku untuk layanan mock. Gunakan layanan backend nyata untuk pengujian.
Parameter
Deskripsi
Enable
Nyalakan sakelar Enable.
-
Diaktifkan: Origin pihak ketiga tertentu dapat mengakses resource server Anda melalui browser.
-
Dinonaktifkan: Tidak ada origin pihak ketiga yang dapat mengakses resource server Anda melalui browser.
Allowed Origins
Origin yang diizinkan mengakses resource server Anda. Format yang didukung:
-
Semua origin:
*. -
Pencocokan subdomain wildcard:
*.example.com. -
Beberapa origin spesifik: masukkan setiap origin pada baris terpisah, diawali dengan
http://atauhttps://.
CatatanMemetakan ke header
Access-Control-Allow-Origin. KetikaOriginpermintaan sesuai dengan origin yang diizinkan, header responsAccess-Control-Allow-Originakan mengembalikan nilaiOrigintersebut.Allowed Methods
Metode HTTP yang diizinkan untuk permintaan lintas asal. Metode umum: GET, POST, PUT, DELETE, HEAD, OPTIONS, dan PATCH.
CatatanMemetakan ke header Access-Control-Allow-Methods.
Allowed Request Headers
Header permintaan non-standar yang diizinkan dalam permintaan lintas asal.
-
Semua header:
*. -
Beberapa header spesifik: masukkan setiap nama pada baris terpisah.
CatatanMemetakan ke header Access-Control-Allow-Headers.
Allowed Response Headers
Header respons yang diekspos ke skrip sisi klien.
-
Semua header:
*. -
Beberapa header spesifik: masukkan setiap nama pada baris terpisah.
CatatanMemetakan ke header Access-Control-Expose-Headers.
Allow to Carry Credentials
Apakah permintaan lintas asal dapat menyertakan kredensial (cookie, otentikasi HTTP).
CatatanMemetakan ke header Access-Control-Allow-Credentials.
Precheck Expiration Time
Untuk permintaan tidak sederhana, durasi dalam detik yang dapat digunakan browser untuk menyimpan cache hasil respons preflight (OPTIONS).
CatatanMemetakan ke header Access-Control-Max-Age.
-
Verifikasi
-
Kirim permintaan uji:
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/list -
Output 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
Pelajari lebih lanjut tentang CORS di MDN.