Pengurai Header HTTP

Tempel seluruh permintaan atau respons HTTP — blok yang dicetak curl -v, atau yang ditampilkan panel Network browser — dan setiap baris header didekode: nama, nilai, kalimat berbahasa sederhana tentang fungsinya, serta dokumen yang mendefinisikannya. Set-Cookie diurai atribut demi atribut (Secure, HttpOnly, SameSite, Max-Age, Expires…), parameter Content-Type dan Accept diuraikan secara lengkap, dan blok diaudit untuk masalah struktural klasik: baris terlipat yang sudah usang, karakter ilegal, header duplikat, serta header yang dikirim ke arah yang salah. Semuanya berjalan di browser dan tidak ada yang diunggah.
Otomatis memeriksa baris pertama: baris permintaan (GET /path HTTP/1.1) berarti permintaan, baris status (HTTP/1.1 200 OK) berarti respons, selain itu dibaca sebagai blok header polos. Pilihan lainnya memaksa arahnya, yang mengubah peringatan mana yang berlaku.
Belum ada yang diurai. Tempel blok permintaan atau respons di atas lalu tekan Urai header, atau tekan Contoh untuk contoh lengkap.
Di mana mendapatkan blok yang layak diurai. Di terminal, curl -v https://example.com/ 2>&1 mencetak permintaan dan respons dengan awalan > dan < — hapus awalan itu lalu tempel. curl -sI https://example.com/ hanya memberikan blok header respons. Di browser, buka alat pengembang, tab Network, muat ulang, pilih permintaan dokumen, lalu gunakan Salin → Salin header respons; untuk sisi permintaan gunakan Salin sebagai cURL dan baca flag-nya. Blok polos berisi baris Nama: nilai tanpa baris awal juga dapat diurai — pemeriksaan arah kemudian dilonggarkan.
Uji mandiri
Menjalankan ulang parser terhadap blok tetap: deteksi arah, kedua kumpulan sampel, setiap aturan atribut Set-Cookie (SameSite=None tanpa Secure, Max-Age non-numerik, Expires rusak, atribut tidak dikenal, cookie tanpa tanda sama dengan), penggabungan obs-fold, nama field ilegal, header duplikat, ketidaksesuaian arah, dan jalur negatif. Tidak ada yang dikirim ke mana pun.
Apa itu header HTTP?
Dalam satu kalimat: pesan HTTP adalah baris awal, sekumpulan baris Nama: nilai yang disebut header, baris kosong, dan badan opsional — header membawa semua informasi tentang pesan kecuali badannya sendiri: siapa yang mengirim, apa yang dapat diterimanya, bagaimana ia di-cache, bagaimana ia diautentikasi, dan apa yang diinginkan pengirim sebagai balasan.
Empat keluarga
KeluargaBerjalan melaluiContohMenjawab pertanyaan
Header permintaanklien → serverHost, Accept, Cookie, Referer, Authorizationapa yang diinginkan klien dan siapa yang diklaimnya sebagai dirinya
Header responsserver → klienLocation, Server, Set-Cookie, Retry-Afterapa yang dilakukan server dan apa yang diminta sebagai balasan
Header representasikeduanya, tentang badanContent-Type, Content-Length, Content-Encoding, ETagformat badan dan salinan mana yang ini
Header kontrolkeduanya, tentang koneksiCache-Control, Connection, Via, Transfer-Encodingbagaimana pesan dan koneksi ditangani sepanjang jalur

Beberapa header jelas hanya satu arah: If-None-Match hanya masuk akal di permintaan dan Set-Cookie hanya di respons. Mengurai ke arah yang salah adalah salah satu kesalahan debugging salin-tempel klasik, itulah sebabnya halaman ini menandainya.

Tata bahasa baris header

RFC 9110 mendefinisikan baris field sebagai field-name ":" OWS field-value OWS — nama yang hanya terdiri dari karakter token (huruf, digit, dan !#$%&'*+-.^_`|~), titik dua tanpa spasi sebelumnya, dan nilai berupa karakter tampak, spasi, dan tab. Nama header tidak peka huruf besar/kecil (content-type sama dengan Content-Type); nilai hampir selalu peka huruf besar/kecil. Baris yang diawali spasi atau tab dulu melanjutkan header sebelumnya — obs-fold, usang sejak 2014: proxy yang membukanya dapat mengubah arti header, sehingga parser di sini menggabungkannya tetapi memperingatkan bahwa baris itu ada.

Kesalahan umum
  • Memercayai X-Forwarded-For. Header ini ditambahkan oleh setiap proxy di jalur, dan klien dapat memalsukan hop pertama. Ia memberi tahu apa yang diklaim rantai proxy, bukan siapa yang terhubung; perlakukan sebagai petunjuk, dan lebih baik gunakan proxy yang Anda kendalikan untuk menimpanya.
  • Hanya membaca header respons. Separuh kesalahan yang menarik (header Accept yang duplikat, Host yang hilang, header otorisasi yang diarahkan ke host yang salah) berada di permintaan, yang secara default disembunyikan browser. Gunakan Salin sebagai cURL untuk melihat milik Anda sendiri.
  • Menggabungkan baris Set-Cookie. Sebagian besar header duplikat boleh digabung dengan koma — Set-Cookie tidak boleh, karena koma muncul di dalam nilainya sendiri. Browser memperlakukan setiap baris sebagai cookie terpisah.
  • Mengira Content-Length adalah ukuran badan yang Anda tulis. Nilainya adalah ukuran setelah Content-Encoding diterapkan dan hanya ketika pesan tidak chunked; respons Transfer-Encoding: chunked tidak memiliki panjang tunggal yang berarti.
  • Menilai header dari prefiks X--nya. Konvensi itu sudah mati sejak RFC 6648: X-Forwarded-For dan X-Content-Type-Options adalah standar de facto yang permanen, sementara banyak header non-X bersifat eksperimental. Nilailah dari dokumen yang mendefinisikannya, bukan dari prefiksnya.
FAQ

Apakah aman menempelkan header di sini? Parsing sepenuhnya terjadi di browser dan tidak ada yang diunggah. Meski begitu, blok header yang disalin adalah sidik jari: cookie, header otorisasi, dan User-Agent yang persis dapat bersama-sama mengidentifikasi seseorang, jadi urai blok yang tidak keberatan untuk ditunjukkan kepada rekan kerja.

Mengapa browser menampilkan header seperti :status yang dianggap galat oleh halaman ini? Itu adalah pseudo-header HTTP/2 dan HTTP/3 — lapisan framing biner menggantikan baris awal dan Host dengan field pseudo. Halaman ini mengurai teks wire HTTP/1.1 klasik; pseudo-header adalah informasi yang sama setelah protokol menerjemahkannya.

Apa yang terjadi pada X-XSS-Protection? Ia sudah usang: auditor yang dikendalikannya justru menimbulkan bug keamanan sendiri, dan browser menghapusnya. Fungsinya kini menjadi tanggung jawab Content-Security-Policy — buat satu di generator CSP dan audit seluruh rangkaiannya di pemeriksa header keamanan.

Bagaimana atribut Set-Cookie diperiksa? Terhadap RFC 6265: nama dan nilai dipisah pada tanda sama dengan pertama, atribut setelah titik koma pertama, Expires harus berupa tanggal dalam format cookie, Max-Age berupa digit, SameSite salah satu dari Strict/Lax/None — dan None tanpa Secure ditolak oleh browser saat ini, sehingga ditandai secara khusus.

Bisakah hanya mengurai daftar baris header? Bisa — pilih Hanya blok header dan tempel tanpa baris awal. Pemeriksaan arah dilonggarkan; semua hal lain (struktur, Set-Cookie, parameter) tetap berjalan.