𝗪𝗵𝘆 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀 𝗗𝗼𝗻'𝘁 𝗨𝗻𝗱𝗲𝗿𝘀𝘁𝗮𝗻𝗱 𝗖𝗢𝗥𝗦
CORS adalah salah satu alat keamanan yang paling sering disalahpahami dalam pengembangan web. Banyak developer mengira CORS melindungi server mereka. Padahal tidak.
CORS melindungi pengguna.
Browser menerapkan Same-Origin Policy (SOP). Kebijakan ini menghentikan situs berbahaya agar tidak melakukan permintaan ke situs lain atas nama Anda. CORS hanyalah cara server memberi tahu browser untuk melonggarkan aturan tersebut untuk situs-situs tertentu.
Jika permintaan Anda berhasil di Postman tetapi gagal di browser, Anda memiliki masalah CORS. Postman bukanlah browser, sehingga ia tidak menerapkan aturan-aturan ini.
Kesalahan umum yang harus Anda hindari:
- Menggunakan CORS sebagai satu-satunya keamanan. CORS bukanlah autentikasi. Anda tetap membutuhkan token, kata sandi, dan rate limiting.
- Jebakan wildcard. Anda tidak dapat menggunakan
Access-Control-Allow-Origin: *jika Anda perlu mengirim cookie atau kredensial. Anda harus mencantumkan domain yang tepat. - Mengabaikan preflight requests. Browser mengirimkan permintaan OPTIONS otomatis sebelum banyak panggilan API. Jika server Anda memblokir OPTIONS, permintaan sebenarnya akan gagal.
- Header error yang hilang. Jika API Anda mengembalikan error 401 atau 500 tanpa header CORS, browser akan menyembunyikan error yang sebenarnya. Anda hanya akan melihat pesan CORS yang umum.
Cara memperbaikinya:
- Tangani permintaan OPTIONS. Pastikan server Anda mengembalikan status 200 atau 204 untuk panggilan preflight.
- Gunakan middleware. Konfigurasikan CORS pada level middleware untuk memastikan hal tersebut mencakup semua respons, termasuk error.
- Atur header Vary. Jika Anda mengizinkan beberapa origin secara dinamis, Anda harus menambahkan
Vary: Originke dalam respons Anda. - Gunakan alat yang tepat. Untuk Node.js, gunakan package
cors. Untuk Django, gunakandjango-cors-headers.
Berhentilah mencoba melewati CORS dengan ekstensi browser. Perbaikilah konfigurasi server Anda sebagai gantinya.
Sumber: https://dev.to/onsen/why-developers-dont-understand-cors-and-how-to-fix-it-19d5
Komunitas belajar opsional: https://t.me/GyaanSetuAi