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.
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
Masukkan URL target
Tempel endpoint yang ingin Anda uji (mis., https://api.example.com/resource).
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.
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.
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.
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.
| Pengaturan | Perilaku | Default |
|---|---|---|
| Mode Pemeriksaan | Otomatis, Permintaan sederhana, atau hanya Preflight | Otomatis |
| Jalankan Preflight (OPTIONS) | Jika diaktifkan, melakukan simulasi preflight OPTIONS | Diaktifkan |
| Origin | Nilai header Origin yang digunakan untuk analisis/preflight | https://example.com |
| Metode Permintaan | Nilai Access-Control-Request-Method untuk preflight | GET |
| Header Permintaan | Access-Control-Request-Headers (dipisahkan koma) untuk preflight | Kosong |
| Ikuti Pengalihan | Mengikuti rantai pengalihan ke URL akhir | Diaktifkan |
| Pengalihan Maksimum | Batas pengalihan untuk mencegah perulangan | 10 (rentang 0–20) |
| Batas Waktu | Batas waktu permintaan | 15000 ms |
| User-Agent | Mengidentifikasi agen pengguna permintaan | Encode64Bot/1.0 (+https://encode64.com) |
| Jaringan pribadi | Memblokir akses ke rentang jaringan pribadi untuk keamanan | Dinonaktifkan (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.
| Header | Tujuan |
|---|---|
| Access-Control-Allow-Origin | Origin mana yang diizinkan |
| Access-Control-Allow-Credentials | Apakah kuki/kredensial diizinkan (membutuhkan origin non-wildcard) |
| Access-Control-Allow-Methods | Metode yang diizinkan untuk permintaan lintas asal (penting untuk preflight) |
| Access-Control-Allow-Headers | Header yang diizinkan (penting untuk Authorization dan header kustom) |
| Access-Control-Expose-Headers | Header mana yang dapat dibaca oleh JS browser |
| Access-Control-Max-Age | Berapa lama preflight dapat di-cache oleh browser |
| Vary | Variasi 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.
| Pemeriksaan | Mengapa penting |
|---|---|
| Wildcard + kredensial | Access-Control-Allow-Origin: * tidak dapat digunakan dengan kredensial; browser akan memblokir atau perilakunya tidak aman |
| Vary: Origin hilang | Jika respons bervariasi per Origin tetapi tidak di-cache dengan benar, cache bersama dapat mencampur respons antar situs |
| Mencerminkan Origin | Menggema Origin secara membabi buta dapat secara tidak sengaja mengizinkan asal yang tidak tepercaya |
| Peringatan Origin null | Origin: null dapat muncul dalam iframe tersandbox atau konteks file; mengizinkannya sering kali berisiko |
| Allow-Methods / Allow-Headers hilang | Preflight mungkin gagal jika server tidak secara eksplisit mengizinkan metode/header |
| Allow-Headers terlalu luas | Mengizinkan terlalu banyak header dapat memperluas permukaan serangan |
| Max-Age hilang | Preflight mungkin berjalan terlalu sering, menambah latensi |
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/resourceCari 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/privatePreflight 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.comBerguna 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.HeadersMenampilkan header Access-Control-* jika ada.
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)?
❓Mengapa "Access-Control-Allow-Origin: *" berbahaya dengan kredensial?
❓Mengapa saya perlu Vary: Origin?
❓Apakah CORS dapat melindungi API saya dari klien non-browser?
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?
❓Apakah aman untuk menempelkan URL di sini?
Pro Tips
Utamakan daftar izin asal tepercaya daripada mencerminkan Origin apa pun. Perlakukan CORS sebagai konfigurasi yang sensitif terhadap keamanan.
Jika Anda menggunakan kuki/autentikasi, atur Access-Control-Allow-Credentials: true DAN kembalikan origin eksplisit (bukan "*").
Tambahkan Vary: Origin saat mengizinkan beberapa origin atau memilih origin yang diizinkan secara dinamis.
Tambahkan Access-Control-Max-Age yang wajar untuk mengurangi latensi preflight pada API yang stabil.
Uji jalur preflight dan permintaan nyata; beberapa pengaturan mengembalikan header yang benar untuk GET tetapi gagal pada OPTIONS.
Ekspor laporan JSON dan simpan bersama perubahan konfigurasi gateway API untuk mendeteksi regresi dengan cepat.
Additional Resources
Other Tools
- Pemerindah CSS
- Pemerindah HTML
- Pemerindah Javascript
- Pemerindah PHP
- Pemilih Warna
- Ekstraktor Sprite
- Pengkode Biner Base32
- Dekoder Base32
- Pengkode Base32
- Pengkode Biner Base58
- Dekoder Base58
- Pengkode Base58
- Pengkode Biner Base62
- Dekoder Base62
- Pengkode Base62
- Pengkode Biner Base64
- Dekoder Base64
- Encoder Base64
- Pengkode Biner Heksadesimal
- Dekoder Heksadesimal
- Pengkode Heksadesimal
- Pemformat Csharp
- Pemformat CSV
- Dockerfile Formatter
- Pemformat Elm
- Pemformat ENV
- Pemformat Go
- Pemformat GraphQL
- Pemformat HCL
- Pemformat INI
- Pemformat JSON
- Pemformat Latex
- Pemformat Markdown
- Pemformat ObjectiveC
- Php Formatter
- Pemformat Proto
- Pemformat Python
- Pemformat Ruby
- Pemformat Rust
- Pemformat Scala
- Pemformat Skrip Shell
- Pemformat SQL
- Pemformat SVG
- Pemformat Swift
- Pemformat TOML
- Typescript Formatter
- Pemformat XML
- Pemformat YAML
- Pemformat Yarn
- Pengecil CSS
- Html Minifier
- Javascript Minifier
- Pengecil JSON
- Pengecil XML
- Cache Headers Analyzer
- Csp Analyzer
- Dns Records Lookup
- Penampil Header HTTP
- Http Status Checker
- Open Graph Meta Checker
- Redirect Chain Viewer
- Robots Txt Tester
- Security Headers Checker
- Security Txt Checker
- Sitemap Url Inspector
- Tls Certificate Checker
- PDF Ke Teks
- Penguji Regex
- Pemeriksa Peringkat SERP
- Pencarian Whois