Connection
The HTTP Connection header controls whether the network connection stays open after the current transaction completes.
Usage
The Connection header is a hop-by-hop header in HTTP/1.1 used to manage the lifecycle of the underlying TCP connection. A client or server includes this header to signal whether the connection persists for additional requests or closes after the current exchange.
In HTTP/1.1, persistent connections are the
default behavior. Sending Connection: keep-alive is
technically redundant but remains common in practice.
The Keep-Alive header works alongside
the Connection header to set timeout and request
limits on persistent connections.
The Connection header also serves a second role: listing hop-by-hop header field names present in the message. Intermediaries (proxies, gateways) remove any header listed in the Connection value before forwarding the message to the next hop.
Note
HTTP/1.0 defaulted to closing connections
after each request-response cycle, requiring
Connection: keep-alive for persistent
connections. HTTP/1.1 reversed the
default, so connections persist unless
Connection: close is sent explicitly. Send
Connection: close after the last request in a
series to free server resources, or when the
server is under heavy load.
Note
The Connection header is forbidden in HTTP/2 and HTTP/3. These protocols manage connection lifecycle through their own framing layers. Proxies converting between HTTP/1.1 and HTTP/2 strip this header automatically.
Directives
keep-alive
The keep-alive directive signals the sender wants
the connection to remain open for subsequent requests.
This is the default in HTTP/1.1. When present,
the Keep-Alive header provides
parameters like idle timeout and maximum request count.
close
The close directive tells the other party to close
the connection after completing the current
request-response pair. In HTTP/1.0, closing
after each transaction was the default behavior.
Example
A client sends a request with an explicit keep-alive directive. This tells the server to hold the TCP connection open after delivering the response.
GET /api/status HTTP/1.1
Host: api.example.re
Connection: keep-alive
A server signals the connection will close after delivering this response. The client opens a new TCP connection for the next request.
HTTP/1.1 200 OK
Content-Type: application/json
Connection: close
The Connection header also lists hop-by-hop
headers. In this example, the proxy strips the
X-Debug-Token header before forwarding the message.
GET /resource HTTP/1.1
Host: example.re
Connection: keep-alive, X-Debug-Token
X-Debug-Token: abc123