http-methodcorsheadoptionsMenengah3 mnt baca

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

http
HEAD /laporan-tahunan.pdf HTTP/1.1
Host: dokumen.contoh.id
http
HTTP/1.1 200 OK
Content-Length: 15728640
Last-Modified: Wed, 01 Oct 2026 08:00:00 GMT

Server 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":

http
OPTIONS /api/data HTTP/1.1
Host: api.contoh.id
Origin: https://app.contoh.id
Access-Control-Request-Method: POST

Server yang mengizinkan menjawab:

http
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://app.contoh.id
Access-Control-Allow-Methods: GET, POST

Artinya: "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:

javascript
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:

  1. Kapan browser mengirim request OPTIONS otomatis?
  2. Apa yang ditanyakan browser ke server lewat preflight?
  3. 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).