Until now, we had done a lot with programming that is not related to the web or the network. Now it's time for CGI. As the name suggests, CGI means the "Common Gateway Interface" for everything. CGI is one of the essential parts of HTTP (Hyper-Text Transfer Protocol).

CGI is a set of standards that defines a standard way of passing information or web-user requests to an application program and getting data back to forward it to users. It is the exchange of information between the web server and a custom script. When the users requested the web-page, the server sends the requested web-page. The web server usually passes the information to all application programs that process data and sends back an acknowledged message; this technique of passing data back-and-forth between server and application is the Common Gateway Interface. The current version of CGI is CGI/1.1 & CGI/1.2 is under process.


What happens when a user clicks a hyperlink to browse a particular web-page or URL (Uniform Resource Locator).

The steps are:

  • Browser contacts the HTTP web server for demanding the URL
  • Parsing the URL
  • Look for the filename
  • If it finds that file, a request is sent back
  • Web browser takes a response from the webserver
  • As the server response, it either shows the received file or an error message.

It may become possible to set-up an HTTP server because when a certain directory is requested, that file is not sent back; instead, it is executed as a program, and that program's output is displayed back to your browser.

Configuring CGI

The steps are:

  1. Find out which user is running the Web-server
  2. Check for server configuration to see if you can run the scripts in a particular directory
  3. Check for file's permission
  4. Make a clear assurance that scripts you made are readable and executable by the webserver user
  5. Make sure the Python-Script's first line refers to a webserver that the interpreter can run

The architecture of CHI is shown below:

architecture of CGI

Python CGI Program Structure

The output of the Python CGI script must consist of two sections separated by a blank line. The first part contains the number of headers that describe the client what kind of data is following.

Python code header section looks something like this:


print ("Content-Type : text/html")

# then comes the rest hyper-text documents
print ("<html>")
print ("<head>")
print ("<title>My First CGI-Program </title>")
print ("<head>")
print ("<body>")
print ("<h3>This is HTML's Body section </h3>")
print ("</body>")
print ("</html>")

Save this file as CGI.py. When you open that saved file, the output becomes:


This is HTML's Body section

This is a simple Python script that writes its output to STDOUT file, i.e., on-screen.

Use of CGI Module

If programmers write CGI scripts in Python, they can add these lines:

import cgitb

The above code triggers a special exception handler that will display a detailed report in the web-browser in case of any error occurrence.

HTTP Header

Few are the important lists of HTTP headers frequently used in CGI programs. These are:

HTTP Header Value
Content-type text/html
Expires Date
Location URL
Set-Cookie String
Content-length N

CGI Environment Variables

Environment Variables Description
CONTENT_TYPE describes the data-type of the content
HTTP_COOKIE returns the visitor's cookie if one is set
CONTENT_LENGTH It is available for a POST request to define the length of query information
HTTP_USER_AGENT defines the browser type of the visitor
PATH_INFO defines the path of a CGI script
REMOTE_HOST defines the host-name of the visitor
REMOTE_ADDR defines the IP Address of the visitor
REQUEST_METHOD used to make request & the most common methods are - GET and POST

Found This Page Useful? Share It!
Get the Latest Tutorials and Updates
Join us on Telegram