Status
codes are used by the HTTP protocol to communicate the status of
a request. For example, if a document does not exist, the server
returns a "404"
status code to the browser. If a
document has been moved, a "301" status code is returned.
CGI programs can send status information as part of a virtual
document. Here's an arbitrary example that returns success if the
remote host name is bu.edu, and failure otherwise:
#!/usr/local/bin/perl
$remote_host = $ENV{'REMOTE_HOST'};
print "Content-type: text/plain", "\n";
if ($remote_host eq "bu.edu") {
print "Status: 200 OK", "\n\n";
print "Great! You are from Boston University!", "\n";
} else {
print "Status: 400 Bad Request", "\n\n";
print "Sorry! You need to access this from Boston University!", "\n";
}
exit (0);
The Status
header consists of a three-digit numerical
status code, followed by a string representing the code. A status
value of 200 indicates success, while a value of 400 constitutes
a bad request. In addition to these two, there are numerous other
status codes you can use for a variety of situations, ranging from
an unauthorized or forbidden request to internal system errors.
Table 3.3 shows a list of some of commonly used status codes.
Table 3.3: HTTP Status Codes
Status Code |
Message |
200 |
Success |
204 |
No Response |
301 |
Document
Moved |
401 |
Unauthorized |
403 |
Forbidden |
404 |
Not Found |
500 |
Internal Server Error |
501 |
Not Implemented |
For a complete listing of status codes, see:
https://www.w3.org/hypertext/WWW/Protocols/HTTP/HTRESP.html
Unfortunately, most browsers do not support all of them.
One status code that deserves special attention
is status code 204, which produces a "no response." In other words,
the browser will not load a new page if your CGI program returns
a status code of 204:
#!/usr/local/bin/perl
print "Content-type: text/plain", "\n";
print "Status: 204 No Response", "\n\n";
print "You should not see this message. If you do, your browser does", "\n";
print "not implement status codes correctly.", "\n";
exit (0);
The
"no response" status code can be used when dealing with forms or
imagemaps. For example, if the user enters an invalid value in one
of the fields in a form or clicks in an unassigned section of an
imagemap, you can return this status code to instruct the client
to not load a new page.