HEAD, OPTIONS, dan Method Lainnya
Method yang jarang dibahas tapi penting: HEAD untuk cek metadata, OPTIONS untuk preflight CORS.
Mengetuk pintu dan bertanya dulu
GET, POST, PUT, PATCH, DELETE menangani hampir semua kebutuhan. Tapi HTTP punya beberapa method "pendukung" yang bekerja di balik layar. Dua yang wajib kamu kenal:
- HEAD: seperti GET, tapi hanya meminta header response tanpa body. Analoginya mengetuk pintu untuk memastikan ada orang di dalam, tanpa masuk ke rumahnya.
- OPTIONS: bertanya ke server "method dan header apa saja yang kamu izinkan?" Analoginya bertanya ke satpam gedung: "saya boleh bawa apa saja ke dalam?"
Kenapa method ini ada
HEAD ada untuk efisiensi: kalau kamu hanya butuh tahu ukuran file atau kapan terakhir diubah, mengunduh seluruh body adalah pemborosan. OPTIONS ada untuk keamanan browser: sebelum browser mengirim request lintas domain (misalnya frontend di app.contoh.id memanggil API di api.contoh.id), browser mengirim OPTIONS dulu untuk memastikan server mengizinkan. Mekanisme ini disebut preflight, bagian dari CORS yang dibahas di modul tersendiri.
Contoh 1: HEAD mengecek tanpa mengunduh
HEAD /laporan-tahunan.pdf HTTP/1.1
Host: dokumen.contoh.idHTTP/1.1 200 OK
Content-Length: 15728640
Last-Modified: Wed, 01 Oct 2026 08:00:00 GMTServer menjawab header saja, tanpa body PDF sebesar 15 MB. Dari sini kamu tahu file-nya ada, ukurannya 15 MB, dan terakhir diubah 1 Oktober. Pola ini dipakai download manager untuk menampilkan progress dan fitur resume.
Contoh 2: OPTIONS dalam preflight CORS
Browser otomatis mengirim ini sebelum request lintas domain yang "tidak sederhana":
OPTIONS /api/data HTTP/1.1
Host: api.contoh.id
Origin: https://app.contoh.id
Access-Control-Request-Method: POSTServer yang mengizinkan menjawab:
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://app.contoh.id
Access-Control-Allow-Methods: GET, POSTArtinya: "silakan, saya mengizinkan POST dari app.contoh.id." Barulah browser mengirim request aslinya. Kalau server tidak menjawab dengan benar, browser memblokir request dan kamu melihat error CORS yang terkenal itu di console.
Praktik: kapan memakai HEAD di kode
Contoh nyata: sebelum mengunduh file besar, cek dulu ukurannya agar bisa menampilkan konfirmasi ke user:
const head = await fetch(urlFile, { method: "HEAD" });
const ukuran = parseInt(head.headers.get("Content-Length"), 10);
if (ukuran > 100 * 1024 * 1024) {
const lanjut = confirm("File " + (ukuran/1048576).toFixed(1) + " MB. Lanjut unduh?");
if (!lanjut) return;
}
window.location.href = urlFile;Satu request HEAD menghemat user dari unduhan raksasa yang tidak diinginkan. Pola yang sama dipakai untuk mengecek apakah URL masih hidup sebelum menampilkannya sebagai link.
Catatan teknis: Ada juga method TRACE dan CONNECT, tapi keduanya jarang disentuh developer aplikasi. TRACE untuk diagnosis (sering dimatikan karena alasan keamanan), CONNECT untuk proxy HTTPS. Cukup tahu namanya; fokusmu tetap pada HEAD dan OPTIONS.
Tantangan
Jelaskan preflight ke temanmu
Tulis penjelasan 3-5 kalimat (boleh Bahasa Indonesia) yang menjawab:
- Kapan browser mengirim request OPTIONS otomatis?
- Apa yang ditanyakan browser ke server lewat preflight?
- Apa yang terjadi kalau server tidak mengizinkan?
Lalu buka DevTools di website mana pun yang memanggil API beda domain, filter "OPTIONS", dan screenshot atau catat satu contoh preflight yang kamu temukan (method, URL, dan status-nya).