The Common Gateway Interface (CGI) is an interface to the Web server that enables you to extend
the server's functionality. Using CGI, you can interact with users who access your site. On a theoretical level,
CGI enables you to extend the capability of your server to parse (interpret) input from the browser and return
information based on user input. On a practical level, CGI is an interface that enables the programmer to write
programs that can easily communicate with the server.
Normally, if you wanted to extend the Web server's capabilities, you would have to modify the server yourself.
This is an undesirable solution because it requires a low-level understanding of network programming over the Internet
and the World Wide Web protocol. It would also require editing and recompiling the server source code or writing
a custom server for each task. For example, suppose you want to extend your server to act as a Web-to-e-mail gateway
that would take user input from the browser and e-mail it to another user. You would have to insert code into the
server that would parse the input from the browser, e-mail the input to the other user, and send a response back
to the browser over a network connection.
First, such a task requires having access to the server code, something that is not always possible. Second, it
is difficult and requires extensive technical knowledge. Third, it works only for your specific server. If you
want to move your Web server to a different platform, you would have to start over or at least spend a lot of time
porting the code to that platform.
CGI provides a portable and simple solution to these problems. The CGI protocol defines a standard
way for programs to communicate with the Web server. Without much special knowledge, you can write a program in
any computer language that interfaces and communicates with the Web server. This program will work with all Web
servers that understand the CGI protocol.
CGI communication is handled over the standard input and output, which means that if you know how to print and
read data using your programming language, you can write a Web server application. Other than parsing the input
and output, programming CGI applications is almost equivalent to programming any other application. For example,
if you want to program a "Hello, world!" program, you use your language's print functions and the format
defined for CGI programs to print the proper message.