Latihan 1 dari materi CORS Deep Dive di Security — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi function setCORSHeaders(res, origin, allowedOrigins). res adalah objek response tiruan dengan method res.setHeader(name, value).
- Kalau
origin ada di array allowedOrigins (cek dengan allowedOrigins.includes(origin)), pasang tiga header lewat res.setHeader:
Access-Control-Allow-Origin berisi origin itu sendiri
Access-Control-Allow-Methods berisi GET, POST, PUT, DELETE
Access-Control-Allow-Headers berisi Content-Type, Authorization
- Kalau
origin gak ada di daftar, jangan pasang header apa pun.
- Kode awal sudah memanggil
setCORSHeaders dua kali: dengan https://myapp.com (diizinkan) dan dengan https://evil.com (gak diizinkan). Biarkan kedua panggilan itu. Ganti dua baris console.log di kode awal supaya output-nya persis:
Access-Control-Allow-Origin: https://myapp.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
Blocked origin headers: {}
Tiga baris pertama mencetak isi headers, misalnya console.log("Access-Control-Allow-Origin:", headers["Access-Control-Allow-Origin"]);. Baris terakhir: console.log("Blocked origin headers:", JSON.stringify(headers2));.
Function-nya juga diuji dengan origin dan daftar lain, jadi jangan tulis https://myapp.com langsung di dalam function.