Belajar Curl - Headers, Response & Redirect Handling
Episode 4 of 23

Belajar Curl - Headers, Response & Redirect Handling

Mengendalikan percakapan HTTP dengan lebih presisi: mengirim dan menimpa header request, membaca serta menyimpan header respons, mengikuti redirect dengan aman, dan mengelola cookie antar request.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Setelah di episode 3 kalian menjalankan request HTTP pertama dan bisa membaca verbose output, sekarang saatnya mengambil kendali penuh atas percakapan HTTP. Di episode ini kita akan belajar mengirim header yang kita tentukan sendiri, membaca dan menyimpan header respons, menangani redirect, serta mengelola cookie.

Jika episode 3 adalah "belajar mendengar", episode 4 adalah "belajar menyampaikan permintaan dengan presisi". Server membaca identitas dan niat kalian dari header — dengan mengendalikannya, kalian bisa menyamar sebagai browser, meminta format JSON, mengirim token otentikasi, dan menjaga sesi melewati redirect. Ini keterampilan yang akan kalian pakai setiap hari saat menguji API.

Mengirim Custom Header: -H

Header request biasanya diatur oleh curl secara default, tapi hampir selalu ada kalanya kalian perlu menambahkan header sendiri — misalnya meminta format JSON, atau mengirim token API. Opsi -H (atau --header) memungkinkan hal itu:

Kirim satu custom header
curl -H "Accept: application/json" https://api.example.com/data

Formatnya selalu "Nama-Header: Nilai". Untuk mengirim beberapa header sekaligus, cukup ulang opsi -H — satu -H untuk satu header:

Kirim beberapa header sekaligus
curl -H "Accept: application/json" \
     -H "X-Api-Key: rahasia123" \
     -H "User-Agent: belajar-curl/1.0" https://api.example.com/data

Dua hal penting tentang -H:

  1. Header yang kalian berikan menggantikan default curl untuk nama yang sama. Pada contoh di atas, User-Agent ditimpa dari curl/8.21.0 menjadi belajar-curl/1.0.
  2. Untuk menghapus header default, kirim -H "Nama-Header:" (nilai kosong). Ini trik yang sering dipakai untuk menyingkirkan header bawaan yang tidak diinginkan.

Tip

Untuk melihat header yang sampai di server, gunakan endpoint echo seperti httpbin.org/headers. Server tersebut akan mengembalikan JSON berisi semua header yang diterimanya — cara tercepat untuk memastikan header kalian benar-benar terkirim sesuai keinginan. Contoh: curl -H "Accept: application/json"{:bash} https://httpbin.org/headers.

Melihat Response Headers: -i, -D, dan -I

Kita sudah tahu -I (HEAD) dari episode 3. Sekarang tiga cara lain untuk melihat header respons:

OpsiPerilaku
-i (--include)Menampilkan header respons diikuti body pada output yang sama
-D file (--dump-header)Menyimpan header respons ke file terpisah
-D -Menyimpan header ke stdout (dipisah dari body)
-I (--head)Mengirim method HEAD — hanya header, tanpa body

Contoh -i — header dan body tampil bersamaan:

Include: header + body
curl -i https://example.com

Dan -D — header ditulis ke file sementara body tetap ke stdout:

Dump header ke file
curl -D headers.txt https://example.com

Perbedaan kuncinya: -i mencampur header dengan body di satu aliran, sedangkan -D memisahkannya — body tetap bisa dialirkan ke proses lain tanpa terkontaminasi. Untuk menguji API, kombinasi -D - dan pemipaan body ke jq adalah pola yang sangat umum.

Redirect Handling: -L dan --max-redirs

Sering kali halaman yang kalian minta tidak benar-benar berada di URL tersebut — server mengirim respons 3xx beserta header Location yang menunjukkan alamat baru. Ini seperti seseorang pindah rumah dan meninggalkan alamat penerusannya.

Sekarang, bagian yang sering mengejutkan pemula: secara default, curl TIDAK mengikuti redirect. Ia hanya menampilkan respons 3xx-nya dan berhenti. Coba sendiri:

Tanpa -L: curl berhenti di respons 3xx
curl -i http://example.com

Kalian akan melihat baris HTTP/1.1 301 Moved Permanently dan header Location: https://example.com/, lalu curl berhenti — halaman final tidak pernah diambil. Untuk menyuruh curl mengejar redirect, gunakan -L (--location):

Dengan -L: ikuti redirect sampai halaman final
curl -L http://example.com

Sekarang curl secara otomatis mengirim request baru ke URL di header Location, dan melakukannya berulang jika ada redirect berantai. Untuk membatasi jumlah lompatan — melindungi diri dari redirect loop — gunakan --max-redirs:

Batasi maksimal 5 redirect
curl -L --max-redirs 5 https://api.example.com

Warning

Saat mengikuti redirect, curl bisa mengubah method POST menjadi GET untuk respons 301, 302, dan 303 — sesuai perilaku standar HTTP. Jika API kalian mengandalkan method tertentu saat redirect, perhatikan opsi --post301, --post302, dan --post303 yang memaksa method tetap dipertahankan.

Cookies: Menjaga Sesi dengan -b dan -c

HTTP pada dasarnya tidak bernegara (stateless) — setiap request berdiri sendiri. Cookie adalah mekanisme untuk mengingat: server mengirim cookie di respons, dan klien mengirimkannya kembali pada request berikutnya. Tanpa cookie, fitur "login" tidak akan berfungsi.

Curl tidak menyimpan cookie secara otomatis. Dua opsi yang mengaturnya:

  • -c file (--cookie-jar) — menyimpan cookie yang diterima ke sebuah file.
  • -b file (--cookie) — mengirim cookie dari file bersama request.

Alurnya seperti proses login lalu lanjut bekerja:

Simpan cookie dari respons (mis. setelah login)
curl -c cookies.txt -d "user=armand&pass=1234" https://app.example.com/login
Kirim cookie pada request berikutnya
curl -b cookies.txt https://app.example.com/dashboard

Pola -c lalu -b dengan file yang sama adalah idiom paling umum untuk menjaga sesi antar request. Kalian juga bisa menulis cookie langsung sebagai string, misalnya -b "session=abc123" — berguna saat nilai cookie sudah diketahui.

Note

Nama -b dan -c sering tertukar karena singkat dan berurutan di alfabet. Trik mengingat: -c untuk save Cookies (menyimpan ke file) dan -b untuk Bring cookies back (mengirim dari file). Curl -c collects, curl -b brings.

Kesalahan Umum (Common Pitfalls)

  1. Lupa -L saat menghadapi redirect. Halaman tampak "tidak sampai" padahal hanya 3xx. Selalu cek dengan -i apakah respons yang datang adalah 3xx + Location.

  2. Menulis format header dengan salah. Formatnya selalu "Nama: Nilai" dengan titik dua dan spasi — bukan "Nama = Nilai". Server akan menolak atau mengabaikan header yang salah format.

  3. Mengira -i dan -I sama. -i menampilkan header diikuti body (tetap GET), -I mengirim method HEAD (tanpa body). Konteksnya berbeda.

  4. Melupakan --max-redirs. Redirect berantai yang tidak terkendali bisa berujung pada loop tak berujung. Selalu pasang batas saat menulis script.

Penutup

Pada episode 4 ini kalian telah mengambil kendali atas percakapan HTTP: mengirim dan menimpa header request dengan -H, membaca serta menyimpan header respons dengan -i dan -D, mengikuti redirect dengan -L dan --max-redirs, serta mengelola cookie dengan -b dan -c.

Inti yang harus dibawa pulang:

  • -H "Nama: Nilai" menambah atau menimpa header; -H "Nama:" menghapusnya.
  • -i menggabungkan header + body; -D memisahkannya ke file; -I hanya HEAD.
  • Curl tidak mengikuti redirect tanpa -L; batasi lompatan dengan --max-redirs.
  • Cookie dikelola manual: -c menyimpan, -b mengirim.

Di episode 5 selanjutnya kita akan masuk ke metode yang mengubah data di server: POST, PUT, DELETE & Form Data — mengirim payload dengan -d dan --data-urlencode, memilih method dengan -X, serta mengunggah file dengan multipart -F. Sampai jumpa di episode 5!

Belajar Curl - Headers, Response & Redirect Handling | Belajar Curl