1. Same-Origin Policy (SOP) & CORS
Browser menerapkan **Same-Origin Policy (SOP)**: sebuah origin didefinisikan oleh tiga serangkai: **Protokol + Domain + Port** (misal: `https://kulo.dev:443`). Secara default, browser melarang script dari satu origin membaca respon data dari origin yang berbeda. **CORS (Cross-Origin Resource Sharing)** adalah mekanisme HTTP header yang memungkinkan server secara eksplisit mengizinkan origin terpercaya tertentu untuk mengakses resource-nya.
2. Preflight Request & Header CORS Esensial
Untuk request non-sederhana (seperti method `PUT`, `DELETE`, atau header custom `Authorization`), browser akan mengirimkan request uji coba ber-metode **`OPTIONS`** terlebih dahulu (*Preflight Request*) sebelum mengirimkan request aktual.
| 1 | HTTP/1.1 200 OK |
| 2 | Access-Control-Allow-Origin: https://app.kulodev.id |
| 3 | Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS |
| 4 | Access-Control-Allow-Headers: Content-Type, Authorization |
| 5 | Access-Control-Allow-Credentials: true |