Request Header

May 20, 2023

A request header is a component of a Hypertext Transfer Protocol (HTTP) request message that contains various parameters and metadata about the request. The request header is sent by the client to the server along with the request body, which contains the actual data being sent by the client.

Purpose

The purpose of the request header is to provide the server with additional information about the client’s request, such as the user agent, the referrer, the preferred language, and the encoding format. This information can be used by the server to customize the response to the client, such as by sending back a different version of a webpage based on the client’s language preference or by compressing the response if the client indicates support for gzip encoding.

Additionally, the request header can be used to provide authentication credentials, such as a username and password or an authentication token, which allow the server to verify the identity of the client and provide access to protected resources.

Usage

The request header is a key component of the HTTP protocol, which is used to transfer data between clients and servers on the World Wide Web. When a client sends a request to a server, it includes a request header that provides information about the request and the client. The server then uses this information to generate a response that is tailored to the client’s needs.

Each request header consists of a set of fields, each of which contains a specific piece of information about the request. The most commonly used fields include:

  • Accept: Indicates the content types that the client is willing to accept, such as text/html or application/json.
  • Accept-Encoding: Indicates the encoding formats that the client supports, such as gzip or deflate.
  • Authorization: Provides authentication credentials, such as a username and password or an authentication token.
  • Cache-Control: Indicates the caching preferences of the client, such as whether or not to cache the response and for how long.
  • Connection: Indicates whether the client wants to keep the connection open or close it after the request is complete.
  • Content-Length: Indicates the length of the request body in bytes.
  • Content-Type: Indicates the format of the request body, such as application/x-www-form-urlencoded or application/json.
  • Cookie: Provides a list of cookies that the client has previously received from the server and wants to include in the request.
  • Host: Indicates the hostname and port number of the server being requested.
  • Referer: Indicates the URL of the page that referred the client to the current page.
  • User-Agent: Provides information about the client’s operating system, browser, and other software.

The request header is typically generated automatically by the client’s web browser or other HTTP client library, but it can also be manually customized by the client. For example, a developer might set the Accept-Encoding field to gzip to ensure that the response is compressed, which can improve performance by reducing the amount of data that needs to be transferred.

Example

A typical request header might look something like this:

GET /example.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

In this example, the client is requesting the /example.html page from the www.example.com server using the HTTP/1.1 protocol. The Host field indicates the hostname and port number of the server, while the User-Agent field provides information about the client’s software. The Accept field indicates that the client is willing to accept HTML, XML, and other types of content, while the Accept-Encoding field indicates that the client supports gzip, deflate, and sdch encoding. Finally, the Accept-Language field indicates that the client prefers English content.