INTERNET-DRAFT D.R.T. Robinson
<draft-robinson-www-interface-01.txt> University of Cambridge
Expires 15 August 1996 15 February 1996
The WWW Common Gateway Interface Version 1.1
Status of this memo
This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas
and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as `work in progress'.
To learn the current status of any Internet-Draft, please check the
`1id-abstracts.txt' listing contained in the Internet-Drafts Shadow
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).
Distribution of this document is unlimited. Please send comments to
the author; general discussion about CGI should take place on the
<email@example.com> mailing list.
The Common Gateway Interface (CGI) is a simple interface for running
external programs, software or gateways under an information server
in a platform-independent manner. Currently, the supported
information servers are HTTP servers.
The interface has been in use by the World-Wide Web since 1993. This
specification defines the interface known as `CGI/1.1', and its use
on the Unix(R) and AmigaDOS(tm) systems.
Together the HTTP  server and the CGI script are responsible for
servicing a client request by sending back responses. The client
request comprises a Universal Resource Identifier (URI) , a
request method and various ancillary information about the request
provided by the transport mechanism.
INTERNET-DRAFT Common Gateway Interface - 1.1 15 February 1996
The CGI defines the abstract parameters, known as environment
variables, which describe the client's request. Together with a
concrete programmer interface this specifies a platform-independent
interface between the script and the HTTP server.
This specification uses the same words as RFC 1123  to define the
significance of each particular requirement. These are:
This word or the adjective `required' means that the item is an
absolute requirement of the specification.
This word or the adjective `recommended' means that there may
exist valid reasons in particular circumstances to ignore this
item, but the full implications should be understood and the case
carefully weighed before choosing a different course.
This word or the adjective `optional' means that this item is
truly optional. One vendor may choose to include the item because
a particular marketplace requires it or because it enhances the
product, for example; another vendor may omit the same item.
An implementation is not compliant if it fails to satisfy one or more
of the `must' requirements for the protocols it implements. An
implementation that satisfies all of the `must' and all of the
`should' requirements for its features is said to be `unconditionally
compliant'; one that satisfies all of the `must' requirements but not
all of the `should' requirements for its features is said to be
Not all of the functions and features of the CGI are defined in the
main part of this specification. The following phrases are used to
describe the features which are not specified: