logo
GeekFormat

Pemeriksa CORS Cross-Origin

Panel Diagnostik CORS

Simulasikan preflight dan permintaan aktual dari sisi server, tentukan dengan cepat apakah masalahnya ada di Allow-Origin, Allow-Headers atau credentials.

Mensimulasikan preflight CORS dan permintaan sebenarnya secara nyata dari sisi server, memeriksa 6 header respons satu per satu, menentukan kesalahan konfigurasi cross-origin secara akurat, memberikan kode perbaikan untuk berbagai framework seperti Nginx/Node.js/Spring.

Rekomendasi Terkait

Kasus penggunaan

  • Ketika konsol browser menampilkan error No 'Access-Control-Allow-Origin' header, segera gunakan alat ini untuk mendeteksi header CORS yang sebenarnya dikembalikan oleh antarmuka target
  • Pada tahap integrasi proyek front-end dan back-end yang terpisah, verifikasi apakah konfigurasi CORS back-end berfungsi dengan benar, menghindari pemborosan waktu dengan mengubah konfigurasi secara buta
  • Setelah mengonfigurasi proxy terbalik Nginx, Apache atau gateway API (Kong/APISIX/Spring Cloud Gateway), verifikasi apakah aturan CORS diteruskan dengan benar
  • Ketika permintaan cross-origin yang membawa Cookie gagal, beralih ke mode credentials untuk mendeteksi konflik konfigurasi antara Allow-Credentials dan Allow-Origin
  • Setelah menambahkan header permintaan kustom (seperti X-Token, X-Requested-With) permintaan diblokir, deteksi apakah telah dideklarasikan dengan benar di Allow-Headers
  • Permintaan metode non-sederhana seperti PUT/DELETE/PATCH gagal cross-origin, periksa apakah Allow-Methods menyertakan metode yang sesuai
  • Front-end tidak dapat membaca header respons kustom (seperti X-Request-Id, X-Total-Count), deteksi konfigurasi Access-Control-Expose-Headers
  • Cross-origin kadang baik kadang buruk setelah akselerasi CDN, deteksi apakah Vary: Origin diatur dengan benar untuk menghindari respons cache CDN yang salah
  • Error cross-origin sesekali terjadi di lingkungan produksi, reproduksi skenario masalah dan simpan pesan respons lengkap untuk pemecahan masalah back-end
  • Saat mempelajari prinsip CORS, amati peran setiap header respons melalui permintaan nyata, memperdalam pemahaman tentang mekanisme cross-origin

Fitur

  • Mensimulasikan permintaan preflight dan permintaan sebenarnya secara nyata dari sisi server, tidak terpengaruh oleh cache browser dan plugin, hasil lebih akurat
  • Menampilkan respons preflight OPTIONS dan respons GET/POST sebenarnya secara terpisah, jelas membedakan tahapan mana yang bermasalah
  • Memeriksa 6 header respons CORS inti satu per satu: Access-Control-Allow-Origin, Allow-Methods, Allow-Headers, Allow-Credentials, Expose-Headers, Max-Age, setiap header diberi status lulus/peringatan/gagal secara terpisah
  • Mendeteksi secara cerdas konflik klasik antara wildcard * dan mode credentials, segera mengingatkan tentang jebakan konfigurasi yang paling umum ini
  • Mendukung asal permintaan Origin kustom, metode HTTP (GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS), header permintaan kustom apa pun
  • Dapat beralih apakah akan membawa credentials (Cookie/Header Authorization/sertifikat klien TLS), mensimulasikan skenario withCredentials=true
  • Mendeteksi secara otomatis apakah header respons Vary: Origin diatur dengan benar, menghindari cache CORS yang salah pada CDN/proxy terbalik
  • Menampilkan konfigurasi Max-Age cache preflight secara terstruktur, mengevaluasi dampak frekuensi permintaan preflight terhadap kinerja
  • Memeriksa konfigurasi Access-Control-Expose-Headers, memastikan header respons mana yang dapat dibaca oleh JavaScript front-end
  • Memberikan saran perbaikan baris demi baris, termasuk contoh konfigurasi untuk framework serverbrowser modern seperti Nginx, Apache, Node.js/Express, Spring Boot, Python/Django/Flask
  • Mencatat secara lengkap pesan asli permintaan dan respons, termasuk kode status, semua header respons, pratinjau badan respons, memudahkan pemecahan masalah mendalam
  • Mengidentifikasi secara otomatis perbedaan antara permintaan sederhana dan permintaan yang memerlukan preflight, menjelaskan mengapa permintaan Anda memicu preflight OPTIONS
  • Mendeteksi masalah CORS dalam skenario pengalihan (apakah Origin berubah setelah pengalihan 301/302/307/308)
  • Mendukung deteksi skenario konten campuran HTTPS/HTTP, mengingatkan masalah terkait cross-origin yang disebabkan oleh konten campuran

Cara Penggunaan

  1. Isi alamat lengkap antarmuka yang perlu dideteksi di kolom input URL target (mendukung http/https, harus menyertakan path)
  2. Isi asal sebenarnya dari halaman front-end Anda di kolom Origin (seperti https://example.com, perhatikan harus menyertakan protokol dan port, jangan sertakan path)
  3. Pilih metode permintaan HTTP (GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS), default GET
  4. Tambahkan header yang perlu Anda kirim di area header permintaan kustom, satu per baris dengan format seperti X-Token: abc123, Content-Type jika merupakan tipe non-sederhana seperti application/json akan secara otomatis memicu preflight
  5. Centang opsi«bawa credentials»sesuai skenario Anda, jika kode front-end menggunakan withCredentials=true atau credentials: 'include' pada fetch harus dicentang
  6. Klik tombol«mulai pemeriksaan», alat akan mengirimkan permintaan preflight OPTIONS dan permintaan sebenarnya secara berurutan di sisi server (jika preflight lulus atau tidak memerlukan preflight)
  7. Lihat laporan analisis: pertama lihat hasil evaluasi keseluruhan, kemudian periksa status setiap header CORS satu per satu, sesuaikan konfigurasi server sesuai saran perbaikan pada item error merah, deteksi ulang setelah perbaikan untuk verifikasi

Pertanyaan Umum

Mengapa dengan Postman/curl permintaan antarmuka tidak ada masalah, begitu browser mengaksesmaka melaporkan error cross-origin?

Ini adalah masalah CORS yang paling klasik! Karena Postman dan curl sama sekali tidak dibatasi oleh kebijakan same-origin browser — mereka adalah klien HTTP, bukan browser, tidak memblokir respons, juga tidak secara otomatis mengirim permintaan preflight OPTIONS. Error cross-origin adalah mekanisme keamanan yang unik bagi browser, hanya lingkungan runtime JavaScript browser yang akan menjalankan pemeriksaan CORS. Postman dapat dipanggil dengan sukses hanya membuktikan antarmuka itu sendiri dapat mengembalikan data, tidak dapat membuktikan konfigurasi CORS benar. Anda perlu menggunakan browser, atau alat ini (mensimulasikan alur CORS browser dari sisi server) untuk mendeteksi, baru akan menemukan masalah.

Error CORSadalah masalah front-endmasih adalah back-end? Siapa yang harus memperbaikinya?

99% error CORS adalah masalah konfigurasi back-end (atau masalah konfigurasi lapisan Nginx/gateway), yang bisa dilakukan front-end sangat terbatas. Inti dari CORS adalah server«otorisasi»browser melalui header respons untuk mengizinkan akses cross-origin, front-end hanya dapat mengatur withCredentials, mengatur header permintaan ini, tidak dapat melewati batasan keamanan browser. Proxy front-end yang dikatakan di internet (devServer proxy, proxy terbalik Nginxproxy front-end dan antarmuka ke asal yang sama) pada dasarnya adalah«menipu»browser agar mengiraadalah permintaan same-origin, bukan benar-benar menyelesaikan masalah CORS, lingkungan produksi jika front-end dan back-end tidak sama-origin tetap perlu back-end mengonfigurasi CORS dengan benar.

Mengapa permintaan GET saya tidak cross-origin, begitu diubah menjadi POST/PUTmaka cross-origin?

Karena GET biasanya memenuhi kondisi permintaan sederhana, browserlangsung mengirim permintaan; sedangkan POST jika Anda mengirim Content-Type: application/json (90% antarmuka POSTsemua adalah ini),makatidaktermasuk permintaan sederhana lagi, akan memicu preflight OPTIONS. Permintaan preflight memerlukan server mengembalikan header CORS yang benar, banyak orang hanyamemberikan GET/POST mengonfigurasi header CORS tetapi tidak menangani metode OPTIONS, atau respons OPTIONS tidak membawa header,makamelaporkan errortelah. Metode seperti PUT/DELETE/PATCHsendirimakatidakadalah metode sederhana, pasti memicu preflight.

Bagaimana cara mengatasi cross-origin di lingkungan pengembangan? Bagaimana dengan lingkungan produksi?

Lingkungan pengembanganada beberapajenisskema:①proxy bawaan framework (devServer.proxy milik Vue CLI, server.proxy milik Vite, proxy milik Create React App):proxy permintaan antarmuka ke asal yang sama dengan server pengembangan front-end, browser mengiraadalah permintaan same-origin tidak cross-origin;②menutup parameter keamanan browser (seperti Chrome menambahkan parametermengaktifkan --disable-web-security), hanya untuk pengujian sementara lokal, sama sekali tidak boleh digunakan untuk penjelajahan normal;③back-end mengonfigurasi CORS mengizinkan asal localhost (disarankan, perilakunya konsisten dengan lingkungan produksi). Lingkungan produksi harus back-end mengonfigurasi CORS dengan benar: konfigurasikan daftar putih asal yang diizinkan, atur Allow-Methods/Allow-Headers/Allow-Credentials dengan benar, tambahkan Vary: Origin, atau gunakan gateway/Nginx untuk menangani CORS secara terpadu.

Apakah Access-Control-Allow-Origin dapat mengonfigurasi beberapa asal? Bagaimana cara mengonfigurasi beberapa nama domain untuk mengizinkan cross-origin?

Tidak bisa, header respons Access-Control-Allow-Origin hanya boleh memiliki satu nilai, baik itu satu asal spesifik (seperti https://a.com), atau *. Browser tidak menerima beberapa asal (misalnya menulis https://a.com,https://b.com tidak valid, browser akan menganggap tidak cocok). Cara konfigurasi multi-asal yang benar adalah: server memelihara daftar putih asal yang diizinkan, setiap kali menerima permintaan baca nilai Origin di header permintaan, periksa apakah Origin ini ada dalam daftar putih, jika ada maka atur Access-Control-Allow-Origin menjadi nilai Origin spesifik ini,sekaligusmengembalikan header Vary: Origin; jika tidak ada maka tidak mengembalikan header CORS atau mengembalikan error. Jangan mencoba mengembalikan beberapa header Allow-Origin atau menggunakan koma untuk memisahkan beberapa nilai, browsersemua tidak mengenali.

Apakah permintaan preflight OPTIONS perlu mengembalikan logika bisnis? Bisa langsung mengembalikan 204?

Permintaan preflight OPTIONStidak perlu mengembalikan logika bisnis dan badan respons apa pun, hanya perlu mengembalikan header respons CORS yang benar dan kode status 200/204makabisatelah. Browser menerima header CORS yang benarmaka menganggap preflight lulus, tidak akan membaca konten body respons OPTIONS. Jadi praktik terbaik adalah: langsung intersep permintaan OPTIONS di lapisan Nginx/gateway, kembalikan 204 No Content dan header CORS yang benar, tidak diteruskan ke server aplikasi back-end,seperti inisekaligus mengurangi beban back-end, juga menghindari kesalahan 405 yang disebabkan oleh rute back-end tidak mendukung OPTIONS. Tetapi perhatikan untuk memastikan header CORS respons OPTIONS dan header CORS permintaan sebenarnya tetap konsisten.

Mengapa saya mengatur withCredentials: true, Cookie tetap tidak terbawa?

Permintaan cross-origin yang membawa Cookie perlu sekaligus memenuhi tiga kondisi:①front-end XMLHttpRequest.withCredentials = true atau credentials fetch: 'include';②header respons back-end Access-Control-Allow-Credentials: true;③Access-Control-Allow-Origin tidak boleh *, harus berupa asal spesifik. Ketiga kondisikurang satu tidak bisa. Selain itu juga perlu memperhatikan atribut Cookie: Cookie harus disetel SameSite=None; Secure (lingkungan HTTPS)baru bisa dibawa dalam permintaan cross-origin; jika Cookieadalah SameSite=Lax atau Strict, permintaan cross-origin tidak akan membawa; atribut Domain Cookie harus diatur dengan benar; juga perlu memperhatikan dampak kebijakan Cookie pihak ketiga (browser seperti Chrome memiliki batasan terhadap Cookie pihak ketiga).

Apa hubungan antara CORS dan CSRF? Apakah mengonfigurasi CORS akan menyebabkan kerentanan CSRF?

CORS adalah melonggarkan batasan akses cross-origin, CSRF adalah serangan pemalsuan permintaan lintas situs, keduanyaadalah konsep yang berbeda. Mengonfigurasi CORS dengan benar tidak akan langsungmenyebabkan kerentanan CSRF — karena CORS hanya mengizinkan JS membaca respons, sedangkan CSRF adalah penyerang memicu pengguna mengirimkan permintaan tanpa sepengetahuan (seperti tag img, formulir pengiriman otomatis), permintaan ini meskipun tidak ada CORS juga akan terkirim membawa Cookie. Pertahanan CSRF perlu menggunakan skema seperti CSRF Token, SameSite Cookie, verifikasi Origin/Referer, tidak dapat mengandalkan menonaktifkan CORS untuk mencegah CSRF. Tetapi jika Anda mengonfigurasi CORSsaat menyetel Allow-Origin menjadi * dan mengizinkan membawa credentials, memang akan memperbesar risiko CSRF, jadi skenario membawa credentialah mutlak tidak bisa menggunakan *, harusketat membatasi asal daftar putih.

Apakah unduh file, pengalihan, pemuatan tag gambar/script memiliki masalah CORS?

Tag <img>, <script>, <link> biasa memuat sumber daya cross-origin (gambar CDN, skrip JS, CSS) secara default tidak ada masalah CORS, iniadalah«sumber daya tertanam»bukan«permintaan AJAX», browser mengizinkan pemuatan tetapi JS tidak dapat membaca konten. Tetapi jika Anda ingin memanipulasi gambar cross-origin di Canvas, atau menggunakan fetch/XHR untuk memuat sumber daya ini dan membaca konten,maka perlu CORS,sekaliguspada tagperlu menambahkan atribut crossorigin. Unduh file cross-origin (klik unduh tag a) secara default juga tidak perlu CORS. Pengalihan akan memengaruhi CORS: jika permintaan preflight OPTIONS mengembalikan pengalihan 3xx, browser akan langsung menolak (Preflight redirect is not allowed); pengalihan permintaan sebenarnya jikaadalah lintas asal, setiap hop perlu mengembalikan header CORS dengan benar.

Bagaimana cara mengonfigurasi CORS dengan benar di Nginx? Berikan contoh konfigurasi yang dapat digunakan?

Poin konfigurasi yang disarankan Nginx:①gunakan instruksi map untuk mencocokkan daftar putih Origin, atur variabel $cors_origin secara dinamis;②permintaan OPTIONS langsung mengembalikan 204 tidak meneruskan ke back-end;③add_header ingat tambahkan parameter always untuk memastikan respons error juga membawa header;④tambahkan Vary: Origin;⑤konfigurasikan Allow-Methods/Allow-Headers/Credentials dengan benar. Contoh konfigurasi dapat ditemukan dalam saran perbaikan hasil deteksi alat ini, untuk frameworkbrowser modern seperti Nginx, Apache, Node.js Express, Spring Boot, Python Flask/Django, Koa, Go Gin kami semua menyediakan potongan konfigurasi yang telah terverifikasi.

Bagaimana cara memverifikasi apakah CORS berlaku setelah dikonfigurasi dengan baik?

Beberapa langkah untuk memverifikasi CORS:①pertama gunakan alat ini untuk deteksi online, masukkan URL, Origin, metode, header, opsi credentials, lihat apakah berbagai pemeriksaan preflight dan permintaan sebenarnya lulus;②buka panel Network DevTools browser, centang Disable cache menonaktifkan cache (menghindari gangguan cache lama), picu permintaan cross-origin, periksa apakah header respons preflight OPTIONS dan permintaan sebenarnya benar;③di Console lihat apakah ada error terkait CORS;④uji skenario berbeda: permintaan GET tanpa header kustom, permintaan POST dengan application/json, metode PUT/DELETE, membawa/tidak membawa Cookie, membawa header kustom;⑤gunakan curl untuk mensimulasikan permintaan OPTIONS: curl -i -X OPTIONS -H "Origin: https://yoursource.com" https://api.example.com/endpoint, periksa apakah header respons benar.

Mengapa permintaan cross-originmelaporkan error di Chrome, normal di Safari/Firefox? Atau sebaliknya?

Browser yang berbeda memiliki perbedaan detail implementasi terhadap spesifikasi CORS:①Safari memiliki batasan yang lebih ketat terhadap Max-Age cache preflight (versi awal hanya 600 detik), kebijakan Cookie (ITP anti-pelacakan cerdas) juga lebih ketat, mungkin menyebabkan masalah Cookie cross-origin;②Chrome memiliki pemeriksaan wildcard yang lebih ketat saat membawa credentials, Allow-Headers/Allow-Methods juga tidak mengizinkan *, Firefox beberapa versi mungkin lebih longgar;③IE versi lama (IE11) menggunakan XDomainRequest bukan XMLHttpRequest standar, implementasi CORSada banyak jebakan (seperti tidak mendukung header kustom, hanya mendukung GET/POST);④browser yang berbeda memiliki perbedaan halus dalam penanganan header Vary, penanganan pengalihan, penanganan header keamanan. Solusinya adalahketat mengonfigurasi sesuai spesifikasi CORS, jangan mengandalkan perilaku kompatibilitas satu browser.

Berapa nilai Access-Control-Max-Age yang sesuai? Apa masalahnya jika diatur terlalu lama atau terlalu pendek?

Disarankan untuk mengatur antara 3600 (1 jam) hingga 86400 (24 jam). Diatur terlalu pendek (seperti 60 detik): cache preflight cepat kedaluwarsa, sering mengirimkan permintaan OPTIONS, meningkatkan waktu konsumsi permintaan dan tekanan server, dampaknya terlihat jelas di lingkungan jaringan lemah seluler. Diatur terlalu lama (seperti 31536000yaitu satu tahun): jika Anda memperbarui konfigurasi CORS (seperti menambahkan metode, header yang diizinkan), hasil preflight lama yang di-cache browser pengguna mungkin membutuhkan waktu lamabaru kedaluwarsa, selama itu akanmuncul masalah konfigurasi tidak berlaku. Selain itu Chrome dan Firefox akan secara otomatis memotong nilai yang melebihi 86400 detik menjadi 86400 detik, Anda mengatur sepanjang apa pun tidak berguna. Lingkungan pengembangan dapat diatur -1 untuk menonaktifkan cache preflight, memudahkan debug.

Apakah koneksi WebSocket memiliki masalah cross-origin? Apakah CORS berlaku untuk WebSocket?

WebSocket (ws:// dan wss://) tidak dibatasi oleh mekanisme HTTP CORS, karena WebSocketadalah protokol independen, bukan permintaan HTTP AJAX. Tetapi tahap jabat tangan WebSocket adalah permintaan HTTP, server dapat memeriksa header Origin untuk memutuskan apakah mengizinkan koneksi — ini adalah kontrol izin pada tingkat WebSocket, bukan CORS standar, tetapi prinsipnya mirip. Jika koneksi WebSocket ditolak, Anda perlu memeriksa konfigurasi verifikasi Origin sisi server WebSocket, bukan header HTTP CORS. Pustaka seperti Socket.IO mungkinada cara konfigurasi cross-origin sendiri, mirip dengan konfigurasi CORS standar tetapi tidak sepenuhnya sama. Selain itu, API browserlainnya seperti HTTP/2 Server Push, WebRTC juga ada kontrol izinmasing-masing, tidak sepenuhnya mengikuti HTTP CORS.

Apakah hasil deteksi alat ini konsisten dengan perilaku browser? Mengapa alat mendeteksi lulus tetapi browser tetapmelaporkan error?

Alat ini secara ketat mensimulasikan alur preflight dan permintaan sebenarnya browser sesuai spesifikasi W3C CORS di sisi server, logika pemeriksaan terhadap header CORSpada dasarnya konsisten dengan browser modern. Jika alat mendeteksi lulus tetapi browser tetapmelaporkan error, kemungkinan penyebabnya:①browser menyimpan cache hasil preflight atau respons lama, tekan Ctrl+F5 refresh paksa atau bersihkan cache lalu coba lagi;②ekstensi browser (pemblokir iklan, perlindungan privasi, plugin keamanan) memodifikasi atau memblokir permintaan;③Origin, header permintaan, metode, opsi credentials yang Anda isi di alat tidak konsisten dengan yang sebenarnya dikirim front-end (misalnya front-end sebenarnyamasih membawa header kustom tertentu tetapi Anda tidak menambahkannya di alat);④cache node CDN/proxy tidak konsisten, node yang diminta alat dan node yang diminta browser mengembalikan hasil berbeda;⑤browserada kebijakan keamanan khusus (seperti halaman HTTPS meminta HTTP konten campuran diblokir, batasan khusus protokol file:// file lokal).

术语表

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).

Tabel Perbandingan Lengkap Header Respons CORS

Tabel Penentuan Permintaan Mana yang Akan Memicu Preflight

Tabel Cepat Error CORS Umum dan Solusinya

Troubleshooting