Pemeriksa CORS

Periksa konfigurasi Cross-Origin Resource Sharing (CORS) untuk URL apa pun. Inspeksi header respons Access-Control-*, jalankan permintaan preflight (OPTIONS) opsional dengan Origin/metode/header kustom, dan deteksi kesalahan konfigurasi umum seperti wildcard + kredensial, Vary: Origin yang hilang, atau allow-headers yang terlalu luas.

Loading…

Tentang Pemeriksa CORS

Tempel URL API atau halaman dan verifikasi apakah browser akan mengizinkan permintaan lintas asal. Alat ini menganalisis header respons CORS, dapat menjalankan pemeriksaan preflight (OPTIONS) yang realistis, dan menyoroti konfigurasi berisiko atau rusak (seperti "*" dengan kredensial, Vary: Origin yang hilang, atau allow-methods/allow-headers yang lemah).

Fitur

  • Pemeriksaan header CORS untuk URL publik apa pun (Access-Control-* dan header terkait).
  • Simulasi preflight opsional (OPTIONS) dengan Origin, metode permintaan, dan header permintaan kustom.
  • Ikuti pengalihan (hingga 10) sehingga Anda memvalidasi endpoint akhir yang benar-benar diakses browser.
  • Tampilan header mentah untuk transparansi dan debugging penuh.
  • Temuan + kartu skor dengan penyaringan "hanya masalah" untuk triase cepat.
  • Analisis Vary untuk mendeteksi Vary: Origin yang hilang dan jebakan CORS terkait cache lainnya.
  • Ekspor hasil sebagai laporan JSON dan PDF untuk audit, tiket, dan dokumentasi.
  • Rekomendasi bawaan untuk masalah umum: wildcard+kredensial, memantulkan Origin, Origin null, allow-methods/allow-headers yang hilang, max-age yang hilang, dan allow-headers yang terlalu luas.

🧭 Cara menggunakan for cors-checker

1

Masukkan URL target

Tempel endpoint yang ingin Anda uji (mis., https://api.example.com/resource).

2

Atur Origin yang Anda uji

Masukkan Origin aplikasi frontend Anda (skema + host), mis., https://app.example.com. Ini adalah nilai yang dikirim browser di header Origin.

3

Pilih mode pemeriksaan

Gunakan Otomatis (direkomendasikan) untuk menganalisis header respons dan perilaku preflight. Gunakan Permintaan sederhana jika Anda khusus menginginkan skenario non-preflight, atau Hanya preflight untuk menjalankan pemeriksaan OPTIONS.

4

Konfigurasi detail preflight (jika berlaku)

Aktifkan "Jalankan Preflight (OPTIONS)" dan atur Metode Permintaan serta Header Permintaan (dipisahkan koma) untuk mensimulasikan perilaku preflight browser nyata (mis., otorisasi, tipe-konten). Aktifkan "Pertimbangkan kredensial" jika kasus penggunaan Anda mencakup kuki atau header auth.

5

Tinjau temuan dan ekspor

Periksa temuan/kartu skor dan detail analisis CORS. Nyalakan "Tampilkan Header Mentah" saat debugging. Ekspor JSON/PDF untuk berbagi atau menyimpan dalam audit.

Spesifikasi teknis

Model permintaan

Alat ini memeriksa header CORS untuk URL target dan dapat secara opsional melakukan permintaan preflight (OPTIONS) menggunakan Origin, metode, dan header yang diminta yang disediakan. Pengikutan pengalihan didukung.

PengaturanPerilakuDefault
Mode PemeriksaanOtomatis, Permintaan sederhana, atau hanya PreflightOtomatis
Jalankan Preflight (OPTIONS)Jika diaktifkan, melakukan simulasi preflight OPTIONSDiaktifkan
OriginNilai header Origin yang digunakan untuk analisis/preflighthttps://example.com
Metode PermintaanNilai Access-Control-Request-Method untuk preflightGET
Header PermintaanAccess-Control-Request-Headers (dipisahkan koma) untuk preflightKosong
Ikuti PengalihanMengikuti rantai pengalihan ke URL akhirDiaktifkan
Pengalihan MaksimumBatas pengalihan untuk mencegah perulangan10 (rentang 0–20)
Batas WaktuBatas waktu permintaan15000 ms
User-AgentMengidentifikasi agen pengguna permintaanEncode64Bot/1.0 (+https://encode64.com)
Jaringan pribadiMemblokir akses ke rentang jaringan pribadi untuk keamananDinonaktifkan (jaringan pribadi tidak diizinkan)

Header yang dianalisis (set CORS inti)

Penganalisis berfokus pada header respons dan permintaan CORS standar yang digunakan oleh browser dan pemeriksaan preflight.

HeaderTujuan
Access-Control-Allow-OriginOrigin mana yang diizinkan
Access-Control-Allow-CredentialsApakah kuki/kredensial diizinkan (membutuhkan origin non-wildcard)
Access-Control-Allow-MethodsMetode yang diizinkan untuk permintaan lintas asal (penting untuk preflight)
Access-Control-Allow-HeadersHeader yang diizinkan (penting untuk Authorization dan header kustom)
Access-Control-Expose-HeadersHeader mana yang dapat dibaca oleh JS browser
Access-Control-Max-AgeBerapa lama preflight dapat di-cache oleh browser
VaryVariasi kunci cache (misalnya, Vary: Origin) untuk mencegah keracunan/pencampuran cache
Origin / Access-Control-Request-*Digunakan untuk mensimulasikan perilaku preflight

Heuristik (kesalahan CORS umum yang ditandai)

Temuan didasarkan pada pemeriksaan praktis dan berorientasi keamanan untuk mendeteksi konfigurasi CORS yang rusak atau berisiko.

PemeriksaanMengapa penting
Wildcard + kredensialAccess-Control-Allow-Origin: * tidak dapat digunakan dengan kredensial; browser akan memblokir atau perilakunya tidak aman
Vary: Origin hilangJika respons bervariasi per Origin tetapi tidak di-cache dengan benar, cache bersama dapat mencampur respons antar situs
Mencerminkan OriginMenggema Origin secara membabi buta dapat secara tidak sengaja mengizinkan asal yang tidak tepercaya
Peringatan Origin nullOrigin: null dapat muncul dalam iframe tersandbox atau konteks file; mengizinkannya sering kali berisiko
Allow-Methods / Allow-Headers hilangPreflight mungkin gagal jika server tidak secara eksplisit mengizinkan metode/header
Allow-Headers terlalu luasMengizinkan terlalu banyak header dapat memperluas permukaan serangan
Max-Age hilangPreflight mungkin berjalan terlalu sering, menambah latensi
CORS adalah mekanisme penegakan browser. Server masih dapat dijangkau lintas asal melalui klien non-browser; perlakukan CORS sebagai bagian dari postur keamanan yang lebih luas, bukan satu-satunya kontrol.

Baris perintah

Gunakan perintah ini untuk mereproduksi perilaku CORS dan preflight dari terminal Anda. Mereka berguna untuk debugging dan memverifikasi apa yang dilaporkan alat.

macOS / Linux

Periksa header CORS untuk permintaan normal (simulasikan Origin browser)

curl -i -H "Origin: https://example.com" https://api.example.com/resource

Cari Access-Control-Allow-Origin, Access-Control-Allow-Credentials, dan Vary.

Jalankan permintaan preflight OPTIONS (metode + header)

curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/private

Preflight harus mengembalikan Access-Control-Allow-Methods dan Access-Control-Allow-Headers yang benar agar browser dapat melanjutkan.

Ikuti pengalihan sambil memeriksa header

curl -iL -H "Origin: https://example.com" https://api.example.com

Berguna ketika endpoint mengalihkan ke host berbeda yang memiliki aturan CORS yang berbeda.

Windows (PowerShell)

Periksa header respons dengan header Origin

$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.Headers

Menampilkan header Access-Control-* jika ada.

Jika frontend Anda menggunakan kuki atau autentikasi, hindari CORS yang terlalu permisif. Lebih baik gunakan daftar izin eksplisit asal tepercaya dan sertakan Vary: Origin ketika respons berbeda berdasarkan asal.

Kasus penggunaan

Debug kesalahan browser "CORS diblokir" di frontend

Ketika fetch/XHR gagal dengan kesalahan CORS, verifikasi apakah server mengembalikan header Access-Control-* yang diperlukan untuk Origin dan jenis permintaan Anda.

  • Konfirmasi Access-Control-Allow-Origin cocok dengan asal aplikasi Anda
  • Jika menggunakan kuki/autentikasi, periksa Access-Control-Allow-Credentials bernilai true (dan origin bukan wildcard)
  • Pastikan Vary: Origin ada ketika mengizinkan beberapa asal

Validasi preflight untuk Authorization / header kustom

Kebanyakan panggilan API terautentikasi memicu preflight karena Authorization atau tipe konten non-sederhana. Alat ini membantu memastikan respons OPTIONS mengizinkan metode dan header yang diperlukan.

  • Verifikasi Access-Control-Allow-Methods mencakup POST/PUT/PATCH/DELETE sesuai kebutuhan
  • Verifikasi Access-Control-Allow-Headers mencakup authorization, content-type, dan header X-* yang diperlukan
  • Tangkap allow-methods/allow-headers yang hilang sebelum penerapan

Tinjauan keamanan kebijakan CORS

Kesalahan konfigurasi CORS dapat secara tidak sengaja mengekspos API pribadi ke situs berbahaya (terutama dengan kredensial). Gunakan temuan untuk menangkap pola berisiko tinggi.

  • Deteksi origin wildcard yang dikombinasikan dengan kredensial
  • Deteksi pola origin yang memantulkan dan mengizinkan situs arbitrer
  • Tandai pengizinan Origin: null ketika tidak dimaksudkan

Tingkatkan kinerja dengan caching preflight

Permintaan preflight menambah perjalanan bolak-balik dan latensi. Max-Age yang benar dapat mengurangi pemeriksaan preflight berulang untuk API yang stabil.

  • Verifikasi Access-Control-Max-Age ada ketika sesuai
  • Kurangi panggilan OPTIONS berulang untuk lalu lintas API yang sering

❓ Frequently Asked Questions

Apa itu CORS dalam istilah sederhana?

CORS (Cross-Origin Resource Sharing) adalah mekanisme keamanan browser yang mengontrol apakah halaman web dari satu asal (skema + host + port) dapat membaca respons dari asal lain. Ini bergantung pada header respons Access-Control-* tertentu.

Kapan browser mengirim permintaan preflight (OPTIONS)?

Preflight dikirim ketika permintaan tidak "sederhana", misalnya saat menggunakan metode seperti POST dengan tipe konten tertentu atau saat mengirim header seperti Authorization atau header kustom X-*. Browser memeriksa izin melalui OPTIONS sebelum mengirim permintaan sebenarnya.

Mengapa "Access-Control-Allow-Origin: *" berbahaya dengan kredensial?

Browser memerlukan origin eksplisit ketika kredensial terlibat. Menggunakan wildcard dengan kredensial tidak valid untuk permintaan berkredensial dan menunjukkan konfigurasi berisiko. Lebih baik gunakan daftar izin eksplisit asal tepercaya.

Mengapa saya perlu Vary: Origin?

Jika server Anda mengembalikan nilai Access-Control-Allow-Origin yang berbeda tergantung pada Origin permintaan, cache harus bervariasi berdasarkan Origin untuk menghindari menyajikan respons yang dimaksudkan untuk satu situs ke situs lain. Vary: Origin membantu mencegah pencampuran cache dan masalah keamanan terkait.

Apakah CORS dapat melindungi API saya dari klien non-browser?

Tidak. CORS diberlakukan oleh browser. Skrip yang berjalan di luar browser (server, curl, aplikasi seluler) dapat memanggil API Anda terlepas dari CORS. Gunakan autentikasi, otorisasi, dan pembatasan laju untuk kontrol akses yang sebenarnya.

Apa yang harus saya masukkan ke dalam "Request Headers" saat menguji preflight?

Daftarkan header yang akan dikirim frontend Anda, dipisahkan dengan koma (misalnya, authorization, content-type, x-request-id). Ini mensimulasikan Access-Control-Request-Headers dan memeriksa apakah server mengizinkannya.

Apakah aman untuk menempelkan URL di sini?

Alat ini membuat permintaan sisi server ke URL yang diberikan dan memblokir target jaringan pribadi. Hindari menyertakan rahasia dalam URL (seperti token dalam string kueri) dan utamakan endpoint publik yang Anda percayai.

Pro Tips

Security Tip

Utamakan daftar izin asal tepercaya daripada mencerminkan Origin apa pun. Perlakukan CORS sebagai konfigurasi yang sensitif terhadap keamanan.

Security Tip

Jika Anda menggunakan kuki/autentikasi, atur Access-Control-Allow-Credentials: true DAN kembalikan origin eksplisit (bukan "*").

Security Tip

Tambahkan Vary: Origin saat mengizinkan beberapa origin atau memilih origin yang diizinkan secara dinamis.

Performance Tip

Tambahkan Access-Control-Max-Age yang wajar untuk mengurangi latensi preflight pada API yang stabil.

Best Practice

Uji jalur preflight dan permintaan nyata; beberapa pengaturan mengembalikan header yang benar untuk GET tetapi gagal pada OPTIONS.

CI Tip

Ekspor laporan JSON dan simpan bersama perubahan konfigurasi gateway API untuk mendeteksi regresi dengan cepat.

Additional Resources

Other Tools