CGI and Perl

Table 5.3. Headers.

HTTP_ACCEPT All MIME types that the client will accept, as given by HTTP headers. Each item in this list is separated by commas.Format: type/subtype, type/subtype
HTTP_USER_AGENT The browser the client is using to send the request. General Format: software/version library/version
SERVER_SOFTWARE The name and version of the information server software answering the request (and running the gateway). Format: name/version
SERVER_NAME The server's hostname, DNS alias, or IP address as it would appear in self-referencing URLs.
GATEWAY_INTERFACE The revision of the CGI specification to which this server complies. Format: CGI/revision
SERVER_PROTOCOL The name and revision of the information protocol this request came in with.Format: protocol/revision
SERVER_PORT The port number to which the request was sent.
REQUEST_METHOD The method with which the request was made. For HTTP, this is GET, HEAD, POST, and so on.
PATH_INFO The extra path information, as given by the client. In other words, scripts can be accessed by their virtual pathname, followed by extra information at the end of this path. The extra information is sent as PATH_INFO.
PATH_TRANSLATED The server provides a translated version of PATH_INFO, which takes the path and does any virtual-to-physical mapping to it.
SCRIPT_NAME A virtual path to the script being executed, used for self-referencing URLs.
QUERY_STRING The information that follows the ? in the URI that referenced this script.
REMOTE_HOST The hostname making the request.
REMOTE_ADDR The IP address of the remote host making the request.
AUTH_TYPE If the server supports user authentication and the script is protected, this is the protocol-specific authentication method used to validate the user.
REMOTE_USER If the server supports user authentication and the script is protected, this is the username they have authenticated as.
REMOTE_IDENT If the HTTP server supports RFC 931 identification, then this variable will be set to the remote username retrieved from the server.
CONTENT_TYPE For queries that have attached information, such as HTTP POST and PUT, this is the content-type of the data.
CONTENT_LENGTH The length of the said content as given by the client.
Later, in Example 1, I'll show you how all of these headers are accessible as environment variables by using CGI.pm and the HTTP::Headers class from within your script. So, putting it all together, here's an example of a typical FullRequest HTTP request:
POST /cgi-bin/Echo2 HTTP/1.0
 Accept: */*; q=0.300
 Accept: application/octet-stream; q=0.100
 Accept: text/plain
 Accept: text/html
 From: [email protected]
 User-Agent: Mozilla/5.0Platinum
 Content-length: 588
 Content-type: application/x-www-form-urlencoded

Now that I've discussed the request, it's time to look at the response from the Web server.