Connection
Penggunaan
Header Connection adalah header hop-by-hop pada HTTP/1.1 yang digunakan untuk mengelola siklus hidup koneksi TCP yang mendasarinya. Klien atau server menyertakan header ini untuk menandakan apakah koneksi dipertahankan untuk permintaan tambahan atau ditutup setelah pertukaran saat ini.
Pada HTTP/1.1, koneksi persisten adalah perilaku bawaan. Mengirimkan Connection: keep-alive secara teknis bersifat redundan, tetapi masih umum dilakukan dalam praktik. Header Keep-Alive bekerja berdampingan dengan header Connection untuk menetapkan batas waktu dan batas jumlah permintaan pada koneksi persisten.
Header Connection juga memiliki peran kedua: mencantumkan nama bidang header hop-by-hop yang terdapat pada pesan. Perantara (proxy, gateway) menghapus setiap header yang tercantum pada nilai Connection sebelum meneruskan pesan ke hop berikutnya.
Catatan
HTTP/1.0 secara bawaan menutup koneksi setelah setiap siklus permintaan-respons, sehingga memerlukan Connection: keep-alive untuk koneksi persisten. HTTP/1.1 membalik nilai bawaan tersebut, sehingga koneksi dipertahankan kecuali Connection: close dikirimkan secara eksplisit. Kirimkan Connection: close setelah permintaan terakhir dalam suatu rangkaian untuk membebaskan sumber daya server, atau ketika server sedang mengalami beban berat.
Catatan
Header Connection terlarang pada HTTP/2 dan HTTP/3. Protokol-protokol ini mengelola siklus hidup koneksi melalui lapisan framing miliknya sendiri. Proxy yang mengonversi antara HTTP/1.1 dan HTTP/2 melepas header ini secara otomatis.
keep-alive
Direktif keep-alive menandakan bahwa pengirim ingin koneksinya tetap terbuka untuk permintaan berikutnya. Ini adalah nilai bawaan pada HTTP/1.1. Ketika hadir, header Keep-Alive menyediakan parameter seperti batas waktu idle dan jumlah permintaan maksimum.
close
Direktif close memberi tahu pihak lain untuk menutup koneksi setelah menyelesaikan pasangan permintaan-respons saat ini. Pada HTTP/1.0, menutup koneksi setelah setiap transaksi merupakan perilaku bawaan.
Contoh
Klien mengirimkan sebuah permintaan dengan direktif keep-alive yang eksplisit. Ini memberi tahu server untuk mempertahankan koneksi TCP tetap terbuka setelah mengirimkan respons.
GET /api/status HTTP/1.1
Host: api.example.re
Connection: keep-alive
Server menandakan bahwa koneksi akan ditutup setelah mengirimkan respons ini. Klien membuka koneksi TCP baru untuk permintaan berikutnya.
HTTP/1.1 200 OK
Content-Type: application/json
Connection: close
Header Connection juga mencantumkan header hop-by-hop. Pada contoh ini, proxy melepas header X-Debug-Token sebelum meneruskan pesan.
GET /resource HTTP/1.1
Host: example.re
Connection: keep-alive, X-Debug-Token
X-Debug-Token: abc123