CGI Programming on the World Wide WebBy Shishir Gundavaram1st Edition March 1996 This book is out of print, but it has been made available online through the O'Reilly Open Books Project. |
3.7 Status Codes
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: http://www.w3.org/hypertext/WWW/Protocols/HTTP/HTRESP.html
Unfortunately, most browsers do not support all of them.
The "No Response" Code
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.
Back to: CGI Programming on the World Wide Web
© 2001, O'Reilly & Associates, Inc.