Apa Itu HTTP Header? Fungsi Host, Referer, User-Agent & Lainnya
Ketika browser membuka sebuah website, yang dikirim bukan hanya alamat URL. Di dalam request terdapat informasi tambahan seperti domain tujuan, jenis content yang dapat diterima, credential, cookie, bahasa, sampai informasi mengenai software yang mengirim request.
Informasi tambahan tersebut sebagian besar dikirim menggunakan HTTP header.
Server juga membalas menggunakan header. Response header dapat memberi tahu browser jenis content yang dikirim, aturan caching, cookie baru, lokasi redirect, sampai bagaimana browser sebaiknya memperlakukan response tersebut.
Karena itu HTTP header sangat penting ketika melakukan debugging website, API, web scraping, CDN, reverse proxy, forward proxy, authentication, caching, dan berbagai sistem berbasis HTTP lainnya.
Kalau sebelumnya kamu sudah membaca artikel HTTP Status Code, HTTP header adalah bagian berikutnya yang sangat penting untuk memahami isi request dan response secara lebih lengkap.
Apa Itu HTTP Header?
HTTP header adalah field berupa pasangan nama dan nilai yang membawa informasi tambahan mengenai sebuah HTTP request atau response.
Contoh:
Setiap baris mempunyai:
Contohnya:
Content-Type adalah nama field, sedangkan application/json adalah nilainya.
Di Mana HTTP Header Berada?
Secara sederhana sebuah HTTP request dapat digambarkan seperti:
Header berada setelah request line dan sebelum body.
Pada response:
Request Header vs Response Header
HTTP header dapat muncul pada request maupun response.
| Jenis | Dikirim Oleh | Contoh |
|---|---|---|
| Request Header | Client → Server | Host, User-Agent, Accept, Authorization, Cookie |
| Response Header | Server → Client | Content-Type, Cache-Control, Set-Cookie, Location |
Beberapa field juga mempunyai semantics yang bisa digunakan pada konteks lebih luas.
Contoh HTTP Request Lengkap
Dari header tersebut server dapat mengetahui beberapa konteks request sebelum menentukan response.
Apa Fungsi Host Header?
Host menunjukkan hostname tujuan request.
Header ini penting karena satu server atau satu alamat IP dapat menjalankan banyak website sekaligus.
Misalnya:
Server dapat menggunakan hostname request untuk menentukan virtual host mana yang harus menangani request.
Host Bisa Menyertakan Port
Contohnya:
Ini menunjukkan hostname sekaligus port tujuan.
MDN mendefinisikan Host sebagai header yang menentukan domain server dan secara opsional port TCP yang digunakan. :chatgpt-content-reference{index="1"}
Apa Fungsi User-Agent?
User-Agent adalah header yang memberi informasi mengenai software client yang membuat request.
Contoh browser:
Server dapat menggunakan informasi tersebut untuk berbagai keperluan seperti:
- compatibility,
- analytics,
- debugging,
- feature handling,
- deteksi client tertentu.
MDN menjelaskan User-Agent sebagai string yang membantu peer network mengenali jenis aplikasi, sistem operasi, vendor, atau versi software client. :chatgpt-content-reference{index="2"}
Apakah User-Agent Menentukan IP?
Tidak.
IP address berasal dari koneksi jaringan.
User-Agent adalah metadata pada HTTP request.
| Data | Layer/Konteks |
|---|---|
| IP Address | Network |
| User-Agent | HTTP Header |
Proxy dapat mengubah IP yang terlihat website tanpa otomatis mengubah User-Agent browser.
Apa Fungsi Referer?
Referer dapat menunjukkan halaman sebelumnya yang menjadi sumber navigasi menuju halaman saat ini.
Contohnya pengguna membuka link dari:
menuju:
request dapat membawa:
MDN menjelaskan Referer sebagai alamat halaman sebelumnya tempat link menuju resource saat ini diikuti. :chatgpt-content-reference{index="3"}
Kenapa Namanya Referer, Bukan Referrer?
Nama header HTTP historis memang menggunakan:
dengan satu huruf “r” setelah refe.
Sedangkan istilah bahasa Inggris yang benar adalah:
Karena alasan kompatibilitas, nama header tetap dipertahankan sebagai Referer.
Apakah Referer Selalu Dikirim?
Tidak.
Informasi referer dapat dibatasi berdasarkan:
- Referrer-Policy,
- browser policy,
- HTTPS downgrade behavior,
- privacy settings,
- application implementation.
Apa Itu Referrer-Policy?
Referrer-Policy mengontrol seberapa banyak informasi referer yang boleh dikirim.
Contoh:
atau:
Policy ini membantu mengontrol informasi URL yang dapat diteruskan ke destination.
Apa Fungsi Accept?
Accept menunjukkan jenis content yang dapat diterima client.
Contoh browser:
Untuk API:
Client dapat menyatakan beberapa media type sekaligus.
Apa Fungsi Accept-Language?
Header ini menunjukkan bahasa yang lebih disukai client.
Server dapat menggunakan nilai tersebut sebagai salah satu sinyal untuk menentukan bahasa content.
Tetapi website tidak harus selalu mengikuti header ini.
Proxy Tidak Otomatis Mengubah Accept-Language
Misalnya kamu menggunakan proxy Jepang.
Keduanya bisa tetap berbeda.
Proxy memengaruhi jalur koneksi, sedangkan Accept-Language berasal dari browser atau aplikasi.
Apa Fungsi Accept-Encoding?
Header ini memberi tahu server compression encoding yang didukung client.
Contohnya:
Server dapat memilih encoding tertentu untuk mengurangi ukuran transfer.
Apa Fungsi Content-Type?
Content-Type menjelaskan jenis content yang dikirim.
Contohnya HTML:
JSON:
Gambar:
Header ini sangat penting pada request maupun response yang membawa body.
Content-Type pada API Request
Misalnya client mengirim JSON:
Server mengetahui bahwa body harus diperlakukan sebagai JSON.
Content-Type Salah Bisa Membuat API Error
Misalnya body berisi JSON tetapi header menyatakan:
API tertentu dapat menolak request atau gagal mem-parsing payload.
Apa Itu Content-Length?
Content-Length menunjukkan ukuran content dalam octet sesuai framing yang digunakan.
Contoh:
Artinya body yang dikirim mempunyai panjang 1024 byte.
Apa Fungsi Authorization?
Authorization membawa credential authentication menuju server.
Contoh Bearer token:
Contoh Basic authentication:
Authorization Berbeda dengan Proxy-Authorization
Ini penting ketika menggunakan proxy.
| Header | Untuk Siapa? |
|---|---|
| Authorization | Origin server / API |
| Proxy-Authorization | Proxy server |
Apa Itu Proxy-Authorization?
Proxy-Authorization digunakan untuk mengirim credential ke HTTP proxy.
Contoh konseptual:
Kalau credential belum tersedia atau salah, proxy dapat mengembalikan:
Untuk mekanismenya, baca Proxy Authentication.
Apa Fungsi Cookie?
Cookie membawa cookie yang relevan dari client ke server.
Contoh:
Cookie sering digunakan untuk:
- session login,
- preferences,
- shopping cart,
- analytics,
- state aplikasi.
Apa Itu Set-Cookie?
Set-Cookie merupakan response header yang meminta browser menyimpan cookie.
Contoh:
Pada request berikutnya, browser dapat mengirim kembali cookie tersebut sesuai aturan domain, path, expiry, SameSite, dan atribut lainnya.
Proxy Tidak Otomatis Menghapus Cookie
Misalnya kamu mengganti proxy dari Indonesia ke Singapura tetapi menggunakan browser profile yang sama.
Cookie sebelumnya masih bisa tetap dikirim.
Karena itu pengujian lokasi atau session tertentu perlu mempertimbangkan cookie selain IP.
Ingin Menguji Request HTTP Melalui Proxy?
GudangProxy menyediakan daftar proxy gratis yang dapat difilter berdasarkan negara, protokol, tingkat anonimitas, dan status koneksi. Kamu bisa menguji bagaimana request, response, IP keluar, dan HTTP header berperilaku melalui endpoint yang berbeda.
Lihat Daftar Proxy Gratis →Apa Fungsi Cache-Control?
Cache-Control mengontrol caching pada browser, proxy cache, CDN, atau intermediary lain.
Contoh:
Artinya response dapat dianggap fresh selama periode tertentu sesuai semantics directive tersebut.
Contoh lain:
yang memberi instruksi agar response tidak disimpan oleh cache.
Apa Itu max-age?
Contoh:
Nilai 3600 berarti satu jam.
Selama response masih fresh, client atau cache dapat menggunakan salinan yang tersedia tanpa selalu mengambil resource penuh lagi.
Apa Itu no-cache?
Nama ini sering disalahpahami.
no-cache bukan selalu berarti response tidak boleh disimpan sama sekali.
Secara umum cache harus melakukan validation sebelum menggunakan kembali response.
Apa Itu no-store?
no-store digunakan ketika response tidak boleh disimpan oleh cache.
Ini berbeda dari no-cache.
Apa Fungsi ETag?
ETag adalah validator untuk representasi resource.
Server dapat mengirim:
Pada request berikutnya client dapat mengirim:
Jika resource belum berubah, server dapat memberikan:
HTTP Header dan Status 304
Conditional request membuat browser tidak perlu mengunduh seluruh content yang sama berulang kali.
Apa Fungsi Location Header?
Location sering digunakan pada redirect.
Browser kemudian dapat mengikuti URL baru tersebut.
Untuk status redirect, baca HTTP Status Code.
Apa Fungsi Server Header?
Response dapat mempunyai:
Header ini dapat memberikan informasi tentang software yang menangani request.
Tetapi server tidak wajib memberikan detail lengkap mengenai implementasinya.
Apa Fungsi Date Header?
Date memberi informasi waktu ketika HTTP message dibuat.
Contohnya:
RFC 9110 mendefinisikan Date sebagai timestamp originasi message. :chatgpt-content-reference{index="4"}
Apa Fungsi Connection Header?
Connection digunakan untuk control data yang berlaku pada connection tertentu.
Contoh klasik:
atau pada HTTP/1.1 tertentu:
Namun header hop-by-hop mempunyai aturan khusus ketika message melewati intermediary.
Apa Itu Hop-by-Hop Header?
Hop-by-hop berarti field hanya berlaku pada satu connection antara dua participant yang berdekatan.
Contohnya:
Kedua hubungan tersebut merupakan connection yang berbeda.
RFC 9110 menjelaskan intermediary harus memproses field yang disebut di Connection sebelum meneruskan message, kemudian menghapus field connection-specific tersebut. :chatgpt-content-reference{index="5"}
Apa Itu End-to-End Header?
Secara konsep, banyak header mempunyai semantics yang tetap relevan sampai origin atau recipient akhir.
Proxy biasanya meneruskan field yang tidak dikenal kecuali field tersebut connection-specific atau proxy dikonfigurasi untuk memblokir/mengubahnya. RFC 9110 secara eksplisit menjelaskan behavior ini. :chatgpt-content-reference{index="6"}
Apa Hubungan HTTP Header dengan Proxy?
HTTP proxy berada di antara client dan server.
Karena berada di tengah, proxy dapat mempunyai peran terhadap header seperti:
- meneruskan header,
- menghapus header tertentu,
- menambahkan header,
- mengubah field sesuai konfigurasi,
- menangani Proxy-Authorization,
- menambahkan informasi forwarding.
Apakah Proxy Selalu Mengubah Header?
Tidak.
Behavior tergantung:
- jenis proxy,
- software proxy,
- configuration,
- protocol,
- policy administrator.
Proxy bisa meneruskan banyak header tanpa perubahan.
Apa Itu Via Header?
Via digunakan pada HTTP intermediary untuk menunjukkan informasi mengenai protocol intermediary yang telah menangani message.
Contoh konseptual:
Header ini juga berkaitan dengan forwarding chain dan pencegahan loop.
Untuk arsitektur beberapa proxy, baca Proxy Chain.
Apa Itu Forwarded Header?
Forwarded merupakan standardized header yang dapat membawa informasi mengenai koneksi asli ketika request melewati proxy.
Contoh:
Informasinya dapat mencakup:
- alamat asal,
- protocol,
- host.
Apa Itu X-Forwarded-For?
X-Forwarded-For merupakan header yang sangat umum digunakan untuk membawa informasi alamat client melalui proxy atau load balancer.
Contoh:
Dalam chain:
format dan behavior dapat bergantung pada infrastructure yang digunakan.
Apakah X-Forwarded-For Selalu Bisa Dipercaya?
Tidak.
Client dapat mengirim header tersebut sendiri jika infrastructure tidak menghapus atau menggantinya.
Karena itu backend seharusnya hanya mempercayai forwarding header yang datang melalui proxy/load balancer yang memang dipercaya.
Apa Itu X-Forwarded-Proto?
Header ini sering digunakan reverse proxy untuk memberi tahu backend protocol yang digunakan client.
Contoh arsitektur:
Backend tetap dapat mengetahui bahwa koneksi asli dari client menggunakan HTTPS.
Apa Itu X-Forwarded-Host?
Header ini dapat membawa hostname asli yang digunakan client sebelum request melewati intermediary.
Ini dapat berguna ketika reverse proxy berbicara ke backend menggunakan hostname berbeda.
Forward Proxy dan Reverse Proxy Memperlakukan Header Berbeda?
Bisa.
Forward proxy melayani client menuju internet.
Reverse proxy berada di depan server.
Karena fungsi keduanya berbeda, header yang ditambahkan atau digunakan juga bisa berbeda.
Baca Forward Proxy vs Reverse Proxy.
HTTP CONNECT dan Header
Untuk HTTPS melalui HTTP proxy, client dapat mengirim:
Setelah tunnel berhasil dibuat, TLS traffic berjalan melalui tunnel.
Proxy biasa tidak membaca header HTTP yang berada di dalam koneksi HTTPS end-to-end jika tidak melakukan TLS interception.
Kenapa HTTPS Penting dalam Pembahasan Header?
Pada HTTPS, HTTP message dienkripsi di dalam TLS antara endpoint TLS.
Jadi intermediary biasa yang hanya meneruskan TCP tunnel tidak otomatis dapat membaca header HTTP di dalamnya.
Apa Itu Proxy-Connection?
Kamu mungkin pernah melihat:
Header ini pernah digunakan oleh beberapa client/proxy, tetapi bukan field standar utama seperti header HTTP yang didefinisikan dalam spesifikasi modern.
Jangan membuat implementasi baru bergantung padanya tanpa memahami compatibility target.
Header dan Web Scraping
Script scraping biasanya mengirim HTTP header seperti client lainnya.
Contoh sederhana Python:
Tetapi jangan menganggap mengganti User-Agent atau header tertentu otomatis membuat sebuah script sama seperti browser.
Browser mempunyai behavior jauh lebih kompleks seperti cookie, TLS, JavaScript, caching, redirect, dan berbagai request tambahan.
Header Tidak Boleh Digunakan untuk Mengabaikan Aturan Website
Jika website membatasi automation atau scraping, mengganti header bukan alasan untuk mengabaikan policy tersebut.
Untuk automation yang sah, ikuti:
- Terms of Service,
- robots policy yang relevan,
- rate limit,
- API documentation,
- akses yang memang diizinkan.
HTTP Header dan API
Pada API, header bahkan lebih penting karena sering digunakan untuk:
- authentication,
- content negotiation,
- versioning,
- rate limit metadata,
- request tracing,
- caching.
Contoh API Request
Server dapat membalas:
Header Rate Limit
Beberapa API memberikan metadata seperti:
Nama field dapat berbeda antar-provider.
Kalau ingin memahami mekanismenya, baca Rate Limit API.
Apa Itu Retry-After?
Retry-After dapat digunakan untuk memberi tahu kapan client sebaiknya mencoba lagi.
Header ini sering ditemui bersama kondisi seperti 429 atau 503.
Custom Header
Aplikasi dapat mempunyai field custom.
Contohnya:
atau:
Tetapi untuk standard interoperability, sebaiknya gunakan field standar jika memang sudah ada field yang sesuai.
Apa Itu Request ID?
Request ID membantu melacak satu request melalui beberapa service.
Ketika error terjadi, log dapat dicari berdasarkan ID yang sama.
HTTP Header dan CDN
CDN dapat menggunakan header untuk caching, routing, compression, content negotiation, dan berbagai behavior lainnya.
Contohnya:
Apa Itu Vary Header?
Vary memberi informasi kepada cache bahwa response dapat berbeda berdasarkan request header tertentu.
Contoh:
Artinya cached representation dapat berbeda berdasarkan compression encoding yang diterima client.
Contoh Vary Berdasarkan Bahasa
Response bahasa Indonesia dan Inggris bisa mempunyai cache variant berbeda.
HTTP Header dan CORS
Browser juga menggunakan sejumlah header terkait Cross-Origin Resource Sharing atau CORS.
Contohnya response:
Header CORS mengontrol apakah browser mengizinkan JavaScript dari origin tertentu membaca response cross-origin.
CORS Bukan Firewall Server
CORS terutama merupakan browser security mechanism.
Request dari tool seperti cURL tidak mengikuti enforcement CORS browser dengan cara yang sama.
Jadi error CORS di browser tidak selalu berarti server tidak dapat diakses melalui network.
HTTP Header dan Security
Beberapa response header digunakan untuk security policy browser.
Contohnya:
- Content-Security-Policy,
- Strict-Transport-Security,
- X-Content-Type-Options,
- Referrer-Policy.
Masing-masing mempunyai fungsi dan konfigurasi sendiri.
Apa Itu Content-Security-Policy?
CSP membantu website menentukan sumber content yang diizinkan oleh browser.
Contoh sederhana:
Konfigurasi CSP perlu dibuat dengan hati-hati karena rule yang terlalu ketat dapat merusak fungsi website.
Apa Itu Strict-Transport-Security?
HSTS memberi instruksi kepada browser untuk menggunakan HTTPS pada host tertentu dalam periode yang ditentukan.
Contoh:
HTTP Header Bisa Terlalu Besar?
Bisa.
Walaupun HTTP tidak menetapkan satu batas global sederhana untuk semua field, implementasi server, proxy, CDN, atau framework mempunyai batas praktis masing-masing.
RFC 9110 menjelaskan bahwa server dapat memberikan error 4xx ketika header terlalu besar untuk diproses. :chatgpt-content-reference{index="7"}
Kenapa Cookie Sering Membuat Header Besar?
Cookie dikirim dalam request.
Kalau sebuah domain memiliki banyak cookie atau nilai cookie sangat panjang:
ukuran request header dapat meningkat cukup besar.
Header Terlalu Besar Bisa Gagal di Proxy
Request mungkin diterima satu server tetapi ditolak oleh reverse proxy yang mempunyai batas header lebih kecil.
Dalam kondisi seperti ini backend bahkan belum menerima request.
HTTP Header Bersifat Case-Insensitive?
Nama HTTP field bersifat case-insensitive menurut RFC 9110. :chatgpt-content-reference{index="8"}
Secara semantics:
merujuk pada field name yang sama.
Tetapi aplikasi tetap sebaiknya mengikuti format konvensional agar mudah dibaca.
Bagaimana Cara Melihat HTTP Header?
Ada beberapa cara mudah.
1. Browser Developer Tools
Buka:
Kamu dapat melihat request dan response header.
2. Menggunakan cURL
Untuk melihat response header:
Untuk verbose request:
3. Melalui Proxy
Ini membantu melihat proses koneksi proxy sekaligus HTTP/TLS yang relevan.
Cara Mengirim Custom Header dengan cURL
Gunakan opsi:
Contoh:
Beberapa header sensitif tidak sebaiknya diketik sembarangan pada terminal shared karena command history dapat menyimpannya.
Cara Melihat Header Saja
Gunakan request HEAD jika server mendukung behavior yang sesuai:
HEAD dirancang untuk mendapatkan metadata response tanpa response content seperti GET biasa. RFC 9110 mendefinisikan HEAD identik dengan GET dalam semantics utama tetapi server tidak mengirim content body. :chatgpt-content-reference{index="9"}
Header Request Bisa Berbeda antara Browser dan cURL
Browser biasanya mengirim lebih banyak header.
Contohnya browser dapat mengirim:
Sedangkan cURL default bisa jauh lebih sederhana.
Jadi jangan menganggap request yang berhasil di browser pasti identik dengan request cURL.
Kenapa Website Bisa Berbeda Saat Menggunakan Proxy?
Proxy dapat mengubah salah satu sinyal paling penting yaitu source IP.
Tetapi header browser tetap bisa membawa konteks lain.
Accept-Language: id-ID
Cookie country: ID
User-Agent: Chrome Windows
Website dapat menggunakan kombinasi beberapa sinyal untuk menentukan response.
Apakah Proxy Mengubah User-Agent?
Proxy biasa tidak harus mengubah User-Agent.
Contohnya:
Proxy tertentu dapat dikonfigurasi mengubah header, tetapi itu bukan behavior universal.
Apakah Proxy Menghapus Referer?
Tidak secara otomatis.
Referer biasanya dikontrol browser dan Referrer-Policy.
Proxy dapat dimodifikasi untuk menghapus atau mengubah header tertentu, tetapi jangan menganggap semua proxy melakukannya.
Transparent Proxy dan Header
Beberapa proxy dapat menambahkan informasi tertentu mengenai jalur request.
Karena itu pembahasan anonimitas proxy tidak hanya berkaitan dengan perubahan source IP.
Baca Anonymous Proxy untuk konteks lebih lanjut.
Kesalahan Umum Tentang HTTP Header
- menganggap header sama dengan body,
- menganggap User-Agent adalah IP address,
- menganggap proxy otomatis mengubah semua header,
- menganggap Referer selalu dikirim,
- menganggap no-cache sama dengan no-store,
- menaruh credential Authorization di log publik,
- mempercayai X-Forwarded-For tanpa trusted proxy,
- menganggap mengganti User-Agent membuat script identik dengan browser,
- menganggap CORS adalah network firewall,
- mengabaikan ukuran HTTP header.
Ringkasan Header yang Sering Ditemui
| Header | Fungsi Singkat |
|---|---|
| Host | Hostname tujuan request. |
| User-Agent | Informasi software client. |
| Referer | Sumber navigasi sebelumnya. |
| Accept | Jenis content yang diterima. |
| Accept-Language | Preferensi bahasa. |
| Accept-Encoding | Compression yang didukung. |
| Content-Type | Jenis content/body. |
| Authorization | Credential untuk origin server. |
| Proxy-Authorization | Credential untuk proxy. |
| Cookie | Cookie client menuju server. |
| Set-Cookie | Server meminta browser menyimpan cookie. |
| Cache-Control | Aturan caching. |
| ETag | Validator representasi. |
| Location | Lokasi redirect/resource. |
| Via | Informasi HTTP intermediary. |
| Forwarded | Informasi forwarding terstandar. |
| X-Forwarded-For | Informasi alamat client melalui proxy tertentu. |
FAQ HTTP Header
Apa itu HTTP header?
HTTP header adalah field nama dan nilai yang membawa metadata atau informasi tambahan mengenai HTTP request dan response.
Apa beda request header dan response header?
Request header dikirim client menuju server, sedangkan response header dikirim server kembali menuju client.
Apa fungsi Host header?
Host menunjukkan hostname tujuan request dan membantu server menentukan virtual host atau resource yang harus menangani request.
Apa fungsi User-Agent?
User-Agent memberi informasi mengenai software client yang membuat HTTP request, seperti browser atau aplikasi tertentu.
Apa fungsi Referer?
Referer dapat menunjukkan halaman sebelumnya yang menjadi sumber navigasi menuju resource saat ini, tergantung Referrer-Policy dan behavior client.
Apa fungsi Content-Type?
Content-Type menjelaskan jenis content yang dikirim, misalnya text/html atau application/json.
Apa beda Authorization dan Proxy-Authorization?
Authorization digunakan untuk authentication menuju origin server, sedangkan Proxy-Authorization digunakan untuk authentication menuju HTTP proxy.
Apakah proxy mengubah HTTP header?
Bisa, tetapi tidak selalu. Perilaku tergantung jenis proxy, software, protocol, dan konfigurasi administrator.
Apakah proxy otomatis mengubah User-Agent?
Tidak. Proxy biasa dapat meneruskan User-Agent client tanpa perubahan kecuali dikonfigurasi untuk memodifikasinya.
Apakah X-Forwarded-For bisa dipercaya?
Tidak secara sembarangan. Aplikasi sebaiknya hanya mempercayai forwarding header dari reverse proxy atau load balancer yang memang ditetapkan sebagai trusted intermediary.
