Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
CORSuntuk REST APIs di API Gateway
Cross-origin resource sharing (CORS)
Menentukan apakah akan mengaktifkan CORS dukungan
HTTPPermintaan lintas asal adalah permintaan yang dibuat untuk:
-
Domain yang berbeda (misalnya, dari
example.com
keamazondomains.com
) -
Subdomain yang berbeda (misalnya, dari
example.com
kepetstore.example.com
) -
Port yang berbeda (misalnya, dari
example.com
keexample.com:10777
) -
Protokol yang berbeda (misalnya, dari
https://example.com
kehttp://example.com
)
Jika Anda tidak dapat mengakses API dan menerima pesan kesalahan yang berisiCross-Origin Request Blocked
, Anda mungkin perlu mengaktifkanCORS.
HTTPPermintaan lintas asal dapat dibagi menjadi dua jenis: permintaan sederhana dan permintaan non-sederhana.
Mengaktifkan CORS permintaan sederhana
HTTPPermintaan sederhana jika semua kondisi berikut benar:
-
Ini dikeluarkan terhadap API sumber daya yang hanya memungkinkan
GET
,HEAD
, danPOST
permintaan. -
Jika itu adalah permintaan
POST
metode, itu harus menyertakanOrigin
header. -
Jenis konten payload permintaan adalah
text/plain
,multipart/form-data
, atauapplication/x-www-form-urlencoded
. -
Permintaan tidak berisi header khusus.
-
Persyaratan tambahan apa pun yang tercantum dalam CORSdokumentasi Mozilla untuk permintaan sederhana
.
Untuk permintaan POST
metode lintas asal sederhana, respons dari sumber daya Anda harus menyertakan header Access-Control-Allow-Origin: '*'
atauAccess-Control-Allow-Origin:
.'origin'
Semua permintaan lintas asal lainnya adalah HTTP permintaan non-sederhana.
Mengaktifkan CORS permintaan yang tidak sederhana
Jika sumber API daya Anda menerima permintaan non-sederhana, Anda harus mengaktifkan CORS dukungan tambahan tergantung pada jenis integrasi Anda.
Mengaktifkan integrasi CORS non-proxy
Untuk integrasi ini, CORSprotokol
Untuk membuat respons preflight:
Buat
OPTIONS
metode dengan integrasi tiruan.-
Tambahkan header respons berikut ke respons metode 200:
-
Access-Control-Allow-Headers
-
Access-Control-Allow-Methods
-
Access-Control-Allow-Origin
-
-
Atur perilaku passthrough integrasi ke
NEVER
. Dalam hal ini, permintaan metode dari jenis konten yang tidak dipetakan akan ditolak dengan respons HTTP 415 Jenis Media Tidak Didukung. Untuk informasi selengkapnya, lihat Perilaku passthrough integrasi. -
Masukkan nilai untuk header respons. Untuk mengizinkan semua asal, semua metode, dan header umum, gunakan nilai header berikut:
-
Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'
-
Access-Control-Allow-Methods: '*'
-
Access-Control-Allow-Origin: '*'
-
Setelah membuat permintaan preflight, Anda harus mengembalikan Access-Control-Allow-Origin:
header 'origin'
Access-Control-Allow-Origin: '*'
or untuk semua metode CORS -enabled untuk setidaknya semua 200 tanggapan.
Mengaktifkan CORS integrasi non-proxy menggunakan AWS Management Console
Anda dapat menggunakan AWS Management Console untuk mengaktifkanCORS. APIGateway membuat OPTIONS
metode dan menambahkan Access-Control-Allow-Origin
header ke respons integrasi metode yang ada. Ini tidak selalu berhasil, dan terkadang Anda perlu memodifikasi respons integrasi secara manual untuk mengembalikan Access-Control-Allow-Origin
header untuk semua metode CORS yang diaktifkan untuk setidaknya semua 200 respons.
Mengaktifkan CORS dukungan untuk integrasi proxy
Untuk integrasi proxy Lambda atau integrasi HTTP proxy, backend Anda bertanggung jawab untuk mengembalikanAccess-Control-Allow-Origin
,Access-Control-Allow-Methods
, dan Access-Control-Allow-Headers
header, karena integrasi proxy tidak mengembalikan respons integrasi.
Contoh berikut fungsi Lambda mengembalikan header yang diperlukanCORS: