HTTP header

An HTTP header is a field of an HTTP request or response that passes additional context and metadata about the request or response. For example, a request message can use headers to indicate it's preferred media formats, while a response can use header to indicate the media format of the returned body. Headers are case-insensitive, begin at the start of a line and are immediately followed by a ':' and a header-dependent value. The value finishes at the next CRLF or at the end of the message.

The current specification has a number of header categories, including:

  • Request header: Headers containing more information about the resource to be fetched or about the client itself.
  • Response header: Headers with additional information about the response, like its location or about the server itself (name, version, …).
  • Representation metadata header: metadata about the resource in the message body (e.g. language, length, media type, etc.).

Older versions of the specification referred to:

  • General header: Headers applying to both requests and responses but with no relation to the data eventually transmitted in the body.
  • Entity header: Headers containing more information about the body of the entity, like its content length or its MIME-type (this is a superset of what are now referred to as the Representation metadata headers)

A basic request with one header:

GET /example.http HTTP/1.1

Redirects have mandatory headers (Location):

302 Found
Location: /NewPage.html

A typical set of headers:

304 Not Modified
Access-Control-Allow-Origin: *
Age: 2318192
Cache-Control: public, max-age=315360000
Connection: keep-alive
Date: Mon, 18 Jul 2016 16:06:00 GMT
Server: Apache
Vary: Accept-Encoding
Via: 1.1 (CloudFront)
X-Amz-Cf-Id: TOl0FEm6uI4fgLdrKJx0Vao5hpkKGZULYN2TWD2gAWLtr7vlNjTvZw==
X-Cache: Hit from cloudfront
X-Cache-Info: cached