- CORS (Cross-Origin Resource Sharing)
- Cross-Origin Resource Sharing, standar W3C, memungkinkan server mendeklarasikan asal mana yang diizinkan mengakses sumber daya dengan menambahkan field header HTTP, adalah solusi resmi browser modern untuk mengatasi masalah cross-origin.
- Kebijakan Same-Origin (Same-Origin Policy)
- Mekanisme keamanan inti browser, hanya protokol, nama domain, dan port yang sepenuhnya samabaru dianggap same-origin, JavaScript dari asal berbeda secara default tidak dapat membaca sumber daya satu sama lain.
- Permintaan Preflight (Preflight Request)
- Permintaan metode OPTIONS yang secara otomatis dikirim browser terlebih dahulu untuk permintaan cross-origin non-sederhana, digunakan untuk menanyakan apakah server mengizinkan permintaan sebenarnya berikutnya, hanya setelah preflight lulus baru mengirimkan permintaan sebenarnya.
- Permintaan Sederhana (Simple Request)
- Permintaan cross-origin yang memenuhi kondisi tertentu (metode GET/HEAD/POST, hanya header aman, Content-Typetertentu),tidak perlu mengirim preflight,langsung mengirimkan permintaan sebenarnya.
- Access-Control-Allow-Origin (ACAO)
- Header respons inti CORS, menentukan asal yang diizinkan mengakses sumber daya, bisa berupa URI asal spesifik atau wildcard *, tidak bisa menggunakan * saat membawa credentials.
- Access-Control-Allow-Methods (ACAM)
- Header respons preflight, mendaftarkan semua metode HTTP yang didukung server, beberapa metode dipisahkan dengan koma.
- Access-Control-Allow-Headers (ACAH)
- Header respons preflight, mendaftarkan semua field header permintaan yang diizinkan server, header kustom yang dikirim front-end harus dideklarasikan di sini.
- Access-Control-Allow-Credentials (ACAC)
- Header respons, nilai boolean true berarti mengizinkan permintaan cross-origin membawa Cookie, Authorization dan credentials lainnya, saat ini Allow-Origin tidak boleh *.
- Access-Control-Max-Age (ACMA)
- Header respons preflight, menentukan waktu cache hasil preflight (detik), pengaturan wajar dapat mengurangi permintaan OPTIONS meningkatkan kinerja.
- Vary: Origin
- Header respons, memberi tahu CDN/proxy bahwa konten respons berubah sesuai Origin, saat cache perlu menjadikan Origin sebagai kunci cache, menghindari kekacauan cache respons cross-origin.
- Header permintaan yang terdaftar aman CORS (CORS-safelisted request headers)
- Header permintaan yang dapat dikirim tanpa perlu dideklarasikan di Allow-Headers, termasuk Accept, Accept-Language, Content-Language, Content-Type (nilaitertentu) dll.
- Nama header yang dilarang (Forbidden header name)
- Header permintaan yang dilarang oleh browser untuk diatur secara terprogram oleh JavaScript, seperti Host, Connection, Cookie, Origin dll., header ini dikontrol secara otomatis oleh browser.
- Permintaan Credential (Credentialed Request)
- Permintaan cross-origin yang membawa kredensial identitas seperti Cookie, informasi otentikasi HTTP, sertifikat klien TLS, memerlukan kerja sama front-end dan back-end untuk mengatur withCredentials dan Allow-Credentials.
- Access-Control-Expose-Headers
- Header respons, mendaftarkan header respons yang dapat diakses oleh JavaScript front-end, secara default hanya beberapa header dasar yang dapat diakses, header respons kustom harus dideklarasikan di sini.
- Metode OPTIONS
- Salah satu metode HTTP, digunakan untuk mendapatkan opsi komunikasi yang didukung server, CORS menggunakannya untuk mengirimkan permintaan preflight, menanyakan metode, header, credentials yang diizinkan server.
- Header permintaan Origin
- Header permintaan yang ditambahkan secara otomatis oleh browser, menunjukkan asal mana permintaan saat ini berasal (protokol + nama domain + port), server menentukan apakah mengizinkan cross-origin berdasarkan header ini.
- Atribut crossorigin
- Atribut elemen HTML (seperti script, img, link), digunakan untuk menentukan apakah mengaktifkan CORS untuk memuat sumber daya, nilainya ada anonymous (tidak membawa credentials) dan use-credentials (membawa credentials).
- Mode permintaan no-cors
- Salah satu mode fetch API, mengizinkan mengirimkan permintaan cross-origin tetapi hanya dapat mengirimkan permintaan sederhana dan JavaScript tidak dapat membaca konten respons, setara dengan mengirimkan permintaan buram (Opaque Response).