All Courses

Python - HTTP Headers

Neha Kumawat

2 years ago

Python - HTTP Headers | InsideAIML
Table of Contents
  • Introduction
  • Example of Headers
  • Cache-Control
  • Connection
  • Date
  • Transfer-Encoding
  • Upgrade
  • Via
  • Warning


          Header and body of the message are involved in request and response between client and server. Protocol specific information is in headers that appear at the beginning of the raw message which is sent over TCP connection. Using a blank line, the header is separated from the body of the message.

Example of Headers

          The headers in the HTTP response can be categorized into the following types. Below is a description of the header and an example.


          Directives that MUST be obeyed by all the caching system is specified by the Cache-Control general-header field. The syntax for it is as follows:
Cache-Control : cache-request-directive|cache-response-directive
 An HTTP client or server can use it to specify parameters for the cache or to request certain kinds of documents from the cache. The caching directives are specified in a comma-separated list. For example:
Cache-control: no-cache


          The Connection general-header field allows the sender to specify options that are desired for that particular connection and must not be communicated by proxies over further connections. Following is the simple syntax for using connection header:
Connection : "Connection"
HTTP/1.1 defines the "close" connection option for the sender to signal that the connection will be closed after completion of the response. For example:
Connection: close
By default, HTTP 1.1 uses persistent connections, where the connection does not automatically close after a transaction. HTTP 1.0, on the other hand, does not have persistent connections by default. If a 1.0 client wishes to use persistent connections, it uses the keep-alive parameter as follows:
Connection: keep-alive


          All HTTP date/time stamps MUST be represented in Greenwich Mean Time (GMT), without exception. HTTP applications are allowed to use any of the following three representations of date/time stamps:

Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format


          What type of transformation has been applied to the message body in order to safely transfer it between the sender and the recipient is indicated by the Transfer-Encoding general-header. This is different from content-encoding because transfer-encodings are a property of the message, not of the entity-body. The syntax of Transfer-Encoding header field is as follows:
Transfer-Encoding: chunked
All transfer-coding values are case-insensitive.


         The Upgrade general-header allows the client to specify what additional communication protocols it supports and would like to use if the server finds it appropriate to switch protocols. For example:
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
The Upgrade header field is intended to provide a simple mechanism for transition from HTTP/1.1 to some other, incompatible protocol.


          The Via general-header must be used by gateways and proxies to indicate the intermediate protocols and recipients. For example, a request message could be sent from an HTTP/1.0 user agent to an internal proxy code-named "Fred", which uses HTTP/1.1 to forward the request to a public proxy at, which completes the request by forwarding it to the origin server at The request received by would then have the following Via header field:
Via: 1.0 fred, 1.1 (Apache/1.1)
The Upgrade header field is intended to provide a simple mechanism for transition from HTTP/1.1 to some other, incompatible protocol.


          The Warning general-header is used to carry additional information about the status or transformation of a message which might not be reflected in the message. A response may carry more than one Warning header.
Warning: warn-code SP warn-agent SP warn-text SP warn-date
          In the below example we use the urllib2 module to get a response using urlopen. Next, we apply the info() method to get the header information for that response.

import urllib2
response = urllib2.urlopen('')
html =
print html
When we run the above program, we get the following output

Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close
I hope you enjoyed reading this article and finally, you came to know about Python - HTTP Headers.
For more such blogs/courses on data science, machine learning, artificial intelligence and emerging new technologies do visit us at InsideAIML.
Thanks for reading…
Happy Learning…

Submit Review