Apache server response codes

Introduction

Whenever a user sends a request to a server, a process called a ‘handshake’ begins where the server and your computer communicate and the server makes sure it can accommodate what your user has requested of it. This means being able to make the connection between the two computers and then completing the transfer of data.

Headers are short fragments of text which are generated by servers to hold information pertaining to each transfer as it occurs. There are four kinds of headers:

General

This holds information about the client (user), the server itself and the protocol being used (like http or ftp).
Entity This holds information about the data that is being transferred.

Request

This holds information about the allowable formats and parameters for the transfer.

Response

This is sent out by the server at the end of a transfer, and includes detailed information, in code form, on the outcome of the transfer. 

Response Codes

As a web surfer you’ve probably become familiar with the dreaded 404 error message and the 500 internal server error.

If you get a 404 make sure your link is correct. Case does matter.A 500 Error is the result of a misconfigured CGI script or a misconfigured .htaccess file,. These are the most well-known server response codes, but there are many more. These numerical codes are grouped — the low numbers are generally ‘good’, and operate silently, while anything over 400 is definitely bad news and will be reported to the user in the form of an error message. 

Error Code

Explanation

100-199

Silent Response Codes that signify that a request has been received and is currently being processed.

100

The request has been completed and the rest of the process can continue.

101

The user’s request to switch protocols (like from FTP to HTTP) was accepted.

200-299

Silent codes that confirm that requests have completed successfully.

200

Ok — the file which the client requested is available for transfer. This is the response code you want to see all of your users receiving.

201

When new pages are created by posted form data or by a CGI process, this is confirmation that it worked.

202

The client’s request was accepted, though not yet processed.

203

The information contained in the entity header is not from the original site, but from a third party server.

204

If you click a link which has no target URL, this response is elicited by the server. It’s silent and doesn’t warn the user about anything.

205

This allows the server to reset any content returned by a CGI.

206

Partial content — the requested file wasn’t downloaded entirely. This is returned when the user presses the stop button before a page is loaded, for example.

300-399

A redirection is occurring from the original request.

300

The requested address refers to more than one file. Depending on how the server is configured, you get an error or a choice of which page you want.

301

Moved Permanently — if the server is set up properly it will automatically redirect the reader to the new location of the file.

302

Found — page has been moved temporarily, and the new URL is available. You should be sent there by the server.

303

This is a “see other” SRC. Data is somewhere else and the GET method is used to retrieve it.

304

Not Modified — if the request header includes an ‘if modified since’ parameter, this code will be returned if the file has not changed since that date. Search engine robots may generate a lot of these.

400-499

Request is incomplete for some reason.

400

Bad Request — there is a syntax error in the request, and it is denied.

401

The request header did not contain the necessary authentication codes, and the client is denied access.

402

Payment is required. This code is not yet in operation.

403

Forbidden — the client is not allowed to see a certain file. This is also returned at times when the server doesn’t want any more visitors.

404

Document not found — the requested file was not found on the server. Possibly because it was deleted, or never existed before. Often caused by misspellings of URLs.

405

The method you are using to access the file is not allowed.

406

The requested file exists but cannot be used as the client system doesn’t understand the format the file is configured for.

407

The request must be authorised before it can take place.

408

Request Timeout — the server took longer than its allowed time to process the request. Often caused by heavy net traffic.

409

Too many concurrent requests for a single file.

410

The file used to be in this position, but is there no longer.

411

The request is missing its Content-Length header.

412

A certain configuration is required for this file to be delivered, but the client has not set this up.

413

The requested file was too big to process.

414

The address you entered was overly long for the server.

415

The filetype of the request is unsupported.

500-599

Errors have occurred in the server itself.

500

Internal Server Error — nasty response that is usually caused by a problem in your Perl code when a CGI program is run.

501

The request cannot be carried out by the server.

502

Bad Gateway — the server you’re trying to reach is sending back errors.

503

Temporarily Unavailable — the service or file that is being requested is not currently available.

504

The gateway has timed out. Like the 408 timeout error, but this one occurs at the gateway of the server.

505

The HTTP protocol you are asking for is not supported.

Error code categories

Successful Client Requests:

200 OK
201 Created
202 Accepted
203 Non-Authorative Information
204 No Content
205 Reset Content
206 Partial Content

Client Request Redirected:

300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy

Client Request Errors:

400 Bad Request
401 Authorization Required
402 Payment Required (not used yet)
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable (encoding)
407 Proxy Authentication Required
408 Request Timed Out
409 Conflicting Request
410 Gone
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type

Server Errors:

500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported