|
CGI
_________________________________________________________

The Common Gateway Interface (CGI) is
a
standard
protocol
for interfacing external
application software
with an
information server,
commonly a
web server.
The task of such an information server is to
respond to requests (in the case of web servers, requests from
client
web browsers)
by returning output. Each time a request is received, the server analyzes what
the request asks for, and returns the appropriate output. The two simplest ways
for the server to do this, are the following:
- if the request identifies a file stored on
disk, return the contents of that file;
- if the request identifies an executable
command and possibly arguments, run the command and return its output
CGI defines a standard way of doing the second. It
defines how information about the server and the request is passed to the
command in the form of arguments and
environment variables,
and how the command can pass back extra information about the output (such as
the
type)
in the form of
headers.
___________________________________________________________________________________________________

In
1995, the World Wide
Web (WWW) was small but booming. WWW software developers and web site
developers kept in touch on the www-talk mailing list, so it was there that a
standard for calling command line executables was agreed upon. Specifically
mentioned in the CGI spec are the following contributors:
Rob McCool drafted the initial specification, and
NCSA
still hosts it. It was swiftly implemented in all servers.
__________________________________________________________________________________________________

From the Web server's point of view, certain locators, e.g. http://www.example.com/wiki.cgi,
are defined as corresponding to a program to execute via CGI. When a request for
the
URL
is received, the corresponding program is executed.
Data is passed into the program using
environment variables.
This is in contrast to typical execution, where
Command-line arguments
are used. In the case of
HTTP PUT or POSTs,
the user-submitted data is provided to the program via the
standard input[1].
The program returns the result to the web server in the form of standard
output, prefixed by a header and a blank line.
|