Pemeriksa CORS

Periksa apakah respons yang ditempel mengizinkan asal browser, metode, dan header permintaan tertentu.

Respon untuk memeriksa
Tempelkan juga baris status saat memeriksa respons sebelum penerbangan.
Skema, host, dan port opsional dikirim dalam header Asal.
Aktifkan untuk permintaan yang menyertakan cookie atau autentikasi HTTP.
Keputusan peramban

    Bidang Kontrol Akses yang diurai

    HTTP status
    Access-Control-Allow-Origin
    Access-Control-Allow-Credentials
    Access-Control-Allow-Methods
    Access-Control-Allow-Headers
    Access-Control-Expose-Headers
    Access-Control-Max-Age

    Masukkan detail respons dan permintaan, lalu periksa kebijakan CORS.

    Tempel respons untuk memeriksa kebijakan CORS-nya.

    Header dan detail permintaan Anda tetap ada di browser Anda. Tidak ada yang diunggah atau disimpan oleh BroBroGo.

    Tanya Jawab

    Haruskah saya menempelkan respons sebenarnya atau respons sebelum penerbangan?

    Gunakan Respons aktual untuk memeriksa apakah kode browser dapat membaca satu respons. Gunakan respons Preflight untuk balasan OPTIONS yang menyetujui metode selanjutnya dan nama header yang diminta.

    Mengapa wildcard bisa gagal dengan kredensial?

    Jika cookie atau autentikasi HTTP disertakan, asal yang diizinkan harus sama persis dengan asal yang meminta. Wildcard untuk metode dan header yang diizinkan juga kehilangan makna wildcardnya.

    Apakah hasil kelulusan membuktikan bahwa permintaan langsung akan berhasil?

    Tidak. Hasil ini hanya mencakup respons yang ditempel dan detail permintaan yang dimasukkan di sini. Pengalihan, respons yang di-cache, perubahan aturan server, ekstensi browser, dan respons sebenarnya setelah preflight masih dapat mengubah hasilnya.

    Memahami Kebijakan Cross-Origin Resource Sharing (CORS)

    Cross-Origin Resource Sharing (CORS) adalah mekanisme keamanan yang diterapkan oleh peramban web untuk membatasi interaksi antara dokumen atau skrip yang dimuat dari satu asal (origin) dengan sumber daya dari asal lain. Kebijakan ini sangat penting untuk mencegah skrip berbahaya membaca data sensitif dari server lain tanpa izin.

    Pemeriksa CORS dirancang untuk membantu pengembang web, termasuk front-end, back-end, platform API, dan operasi, dalam menganalisis apakah peramban akan mengizinkan atau memblokir permintaan lintas asal tertentu. Alat ini bekerja dengan mengevaluasi header respons HTTP yang Anda berikan terhadap detail permintaan yang Anda tentukan. Evaluasi ini dilakukan sepenuhnya di dalam peramban Anda; tidak ada data yang diunggah atau disimpan oleh BroBroGo, sehingga privasi data Anda tetap terjaga di perangkat lokal Anda.

    Parameter Input untuk Evaluasi CORS

    Untuk melakukan pemeriksaan kebijakan CORS, alat ini memerlukan beberapa input spesifik yang mencerminkan kondisi permintaan dan respons HTTP yang sebenarnya:

    • Respon untuk memeriksa: Anda harus memilih antara "Respon sebenarnya" atau "Respon sebelum penerbangan". Pilihan ini menentukan jenis validasi yang akan diterapkan pada header yang ditempelkan.
    • Header respons HTTP: Kolom teks ini digunakan untuk menempelkan header respons dari server, dengan batas maksimum hingga 200.000 karakter. Jika kolom ini kosong, alat akan menampilkan pesan kesalahan "Tempelkan header respons HTTP sebelum memeriksa.". Jika input melebihi batas, pesan kesalahan "Respons ini luar biasa besarnya. Simpan di bawah karakter ‹max›." akan muncul. Alat ini juga memvalidasi format baris demi baris; jika ditemukan format yang rusak, pesan kesalahan "Baris ‹line› bukan header HTTP atau baris status yang valid." atau "Baris ‹line› berisi nama header HTTP yang tidak valid." akan ditampilkan.
    • Minta asal: Masukkan skema, host, dan port opsional dari asal yang melakukan permintaan, misalnya https://app.example.com. Input ini harus berupa asal murni atau null, tanpa jalur URL, parameter kueri, atau kredensial. Format yang tidak valid akan memicu pesan kesalahan "Masukkan asal hanya dengan skema, host, dan port opsional, seperti https://app.example.com.".
    • Metode yang diminta: Tentukan metode HTTP yang digunakan dalam permintaan. Jika token metode tidak valid, alat akan menampilkan "Masukkan token metode HTTP yang valid.". Jika metode yang dimasukkan dilarang oleh spesifikasi peramban untuk fetch, pesan kesalahan "Browser tidak mengizinkan metode ‹method› dalam permintaan fetch." akan muncul.
    • Nama header yang diminta: Masukkan nama header yang dikirimkan dalam header Access-Control-Request-Headers, dipisahkan dengan koma atau baris baru, seperti Content-Type, Authorization. Jika nama header tidak valid, pesan kesalahan "“‹header›” bukan nama header permintaan HTTP yang valid." akan ditampilkan.
    • Sertakan kredensial: Sebuah sakelar untuk menandai apakah permintaan menyertakan cookie atau autentikasi HTTP.

    Hasil Analisis dan Keputusan Peramban

    Setelah data dimasukkan dan tombol "Periksa CORS" ditekan, alat akan menampilkan salah satu dari status keputusan peramban berikut:

    • "Diizinkan oleh respons CORS yang ditempel."
    • "Diblokir oleh respons CORS yang ditempel."
    • "Header lolos, tetapi status pra-penerbangan tidak diketahui."
    • "Masukkan detail respons dan permintaan, lalu periksa kebijakan CORS." (jika input belum lengkap saat pemeriksaan dijalankan).
    • "Tempel respons untuk memeriksa kebijakan CORS-nya." (merupakan status awal alat).

    Jika terdapat kesalahan konfigurasi pada input yang Anda masukkan, alat akan menampilkan pesan "Perbaiki masukan yang disorot dan coba lagi.".

    Aturan Evaluasi Header Access-Control-Allow-Origin

    Header Access-Control-Allow-Origin menentukan asal mana saja yang diizinkan untuk membaca respons dari server. Alat ini mengevaluasi header tersebut dengan aturan sebagai berikut:

    • Kecocokan Tepat: Jika nilai header sama persis dengan asal permintaan, alat akan menyatakan "Access-Control-Allow-Origin sama persis dengan ‹origin›.".
    • Wildcard Tanpa Kredensial: Jika header bernilai * dan permintaan tidak menyertakan kredensial, alat menyatakan "Access-Control-Allow-Origin mengizinkan asal mana pun untuk permintaan ini.".
    • Kehilangan Header: Jika header tidak ditemukan dalam respons, keputusan akan diblokir dengan alasan "Access-Control-Allow-Origin hilang.".
    • Ketidakcocokan Nilai: Jika nilai header tidak cocok dengan asal yang diminta, alat akan menyatakan "Access-Control-Allow-Origin adalah ‹actual›, bukan ‹expected›.".
    • Nilai Tidak Valid: Jika header berisi beberapa nilai atau dipisahkan dengan koma, header tersebut dianggap tidak valid dan memicu pesan "Access-Control-Allow-Origin memiliki nilai yang tidak valid: ‹value›.".

    Pengaruh Kredensial pada Kebijakan CORS

    Ketika opsi "Sertakan kredensial" diaktifkan, aturan CORS menjadi jauh lebih ketat untuk menjaga keamanan data pengguna:

    • Larangan Wildcard: Penggunaan wildcard * pada Access-Control-Allow-Origin tidak diperbolehkan jika kredensial disertakan. Pelanggaran terhadap aturan ini akan menghasilkan keputusan blokir dengan alasan "Access-Control-Allow-Origin tidak boleh * jika kredensial disertakan.".
    • Keharusan Header Kredensial: Permintaan dengan kredensial memerlukan header Access-Control-Allow-Credentials bernilai tepat true. Jika tidak terpenuhi, alat akan menyatakan "Permintaan yang diberi kredensial memerlukan Access-Control-Allow-Credentials: true.". Jika terpenuhi, alat menyatakan "Access-Control-Allow-Credentials memang benar.".
    • Kredensial Diabaikan: Jika permintaan tidak menyertakan kredensial, keberadaan header ini tidak dievaluasi, ditandai dengan alasan "Kredensial tidak disertakan, jadi Access-Control-Allow-Credentials tidak memengaruhi keputusan ini.".

    Validasi Permintaan Preflight (Sebelum Penerbangan)

    Permintaan preflight menggunakan metode OPTIONS untuk memastikan apakah server mengizinkan metode dan header kustom sebelum permintaan sebenarnya dikirimkan. Alat ini menerapkan aturan khusus untuk skenario preflight:

    Komponen Preflight Kondisi Evaluasi Pesan Alasan yang Dihasilkan
    Status HTTP Status 2xx sukses "Status preflight ‹status› berhasil."
    Status HTTP Status non-2xx "Status preflight ‹status› bukan status 2xx yang berhasil."
    Status HTTP Baris status tidak disertakan "Tidak ada baris status HTTP yang ditempel, sehingga status prapenerbangan 2xx yang diperlukan tidak dapat diperiksa."
    Metode HTTP Metode diizinkan oleh server "Izin pra-penerbangan ‹method›."
    Metode HTTP Metode masuk daftar aman CORS "‹method› adalah metode yang masuk daftar aman CORS dan tidak perlu muncul di Access-Control-Allow-Methods."
    Metode HTTP Metode tidak diizinkan "Access-Control-Allow-Methods tidak mengizinkan ‹method›."
    Header Kustom Tidak ada header kustom "Tidak ada nama header yang diminta yang memerlukan persetujuan sebelum penerbangan."
    Header Kustom Diizinkan secara eksplisit "Preflight mengizinkan nama header yang diminta: ‹headers›."
    Header Kustom Menggunakan wildcard * (tanpa kredensial) "Access-Control-Allow-Headers: * mencakup nama-nama ini untuk permintaan tanpa kredensial: ‹headers›."
    Header Kustom Tidak diizinkan oleh server "Access-Control-Allow-Headers tidak mengizinkan: ‹headers›."

    Khusus untuk header Authorization, peramban mewajibkan header ini dicantumkan secara eksplisit di dalam Access-Control-Allow-Headers. Penggunaan wildcard * tidak dapat mencakup header ini, sehingga jika tidak dicantumkan secara eksplisit, alat akan memberikan alasan "Authorization harus dicantumkan secara eksplisit; Access-Control-Allow-Headers: * tidak mencakupnya.".

    Batasan Analisis Alat

    Pemeriksa CORS ini bekerja secara statis dengan menganalisis teks header respons dan detail permintaan yang Anda masukkan. Alat ini tidak melakukan koneksi ke server luar, tidak membaca URL secara aktif, tidak menetapkan cookie, tidak memeriksa konfigurasi DNS atau TLS, dan tidak dapat mengubah konfigurasi server Anda.

    Hasil kelulusan yang diberikan hanya menyatakan bahwa kombinasi header dan parameter permintaan yang Anda tempelkan saat ini memenuhi aturan CORS peramban. Hasil ini tidak menjamin bahwa permintaan langsung di lingkungan produksi akan selalu berhasil, karena faktor eksternal seperti pengalihan (redirect), respons yang disimpan di cache, perubahan aturan server secara dinamis, intervensi ekstensi peramban, atau perbedaan respons aktual setelah preflight tidak dapat dideteksi oleh alat ini.

    Pertanyaan yang Sering Diajukan (FAQ)

    Haruskah saya menempelkan respons sebenarnya atau respons sebelum penerbangan?
    Gunakan Respons aktual untuk memeriksa apakah kode browser dapat membaca satu respons. Gunakan respons Preflight untuk balasan OPTIONS yang menyetujui metode selanjutnya dan nama header yang diminta.

    Mengapa wildcard bisa gagal dengan kredensial?
    Jika cookie atau autentikasi HTTP disertakan, asal yang diizinkan harus sama persis dengan asal yang meminta. Wildcard untuk metode dan header yang diizinkan juga kehilangan makna wildcardnya.

    Apakah hasil kelulusan membuktikan bahwa permintaan langsung akan berhasil?
    Tidak. Hasil ini hanya mencakup respons yang ditempel dan detail permintaan yang dimasukkan di sini. Pengalihan, respons yang di-cache, perubahan aturan server, ekstensi browser, dan respons sebenarnya setelah preflight masih dapat mengubah hasilnya.