jim.shamlin.com

HTTP Response Codes

I've collected information on HTTP response codes, as I haven't found a comprehensive and reliable source. A few notes:

  1. The code is returned from the server, and different servers may have different codes for different responses.
  2. For the most part, there are a small handful that will be useful: 200 (OK), 404 (file not found), 401/403 (unauthorized), and 500 (internal error).

100 Series (Processing)

These codes are passed back to the client under certain conditions while a request is being processed. Most software (like Web browsers) handle these gracefully, such that the user is never aware.

100 Continue

The server has received the request headers, and that the client should proceed to send the request body.

101 Switching Protocols

The client has asked the server to switch protocols and the server is acknowledging that it will do so.

102 Processing

Passed to inform the client that the server has not finished processing the request, and the client should expect additional data to be returned.


200 Series (Success)

These codes indicate that the server received and understood the request, and indicate something about the content that is being returned.

200 OK

The server has received and responded to the request without encountering any problems, and no more data should be expected by the client.

201 Created

The request resulted in something being created on the server, but no data is being returned.

202 Accepted

The request has been accepted, but the server doesn't have anything to return just yet.

203 Non-Authoritative Information

The information returned from the server comes from another source, and may not be reliable. (Don't blame me, just passing this along.)

204 No Content

The request has been accepted and understood, but no data is being returned.

206 Partial Content

Only partial content has been returned because the client has either requested partial content or sent a desist order in mid-stream.

207 Multi-Status

The content being returned has a number of status codes pertaining to different parts of the content.


300 Series (Redirected)

301 Moved Permanently

The resource has been moved to a new location. The server is returning data, but the client should use a different address in future.

302 Moved Temporarily

The resource has moved, but will be back later. The server is returning data, but the client should keep the current address for future reference, because it will be moved back after a while.

303 Changing Method

The client asked for the resource via one method (e.g. PUT) and the server is returning data, but would prefer future requests to use a different method (e.g., GET)

304 Not Modified

The server is telling the client that the content has not been modified since the last time the client asked for it.


400 Series (Client Errors)

400 Bad Request

The server doesn't understand the request (generally the result of a syntax error).

401 Unauthorized

The client did not pass the correct authentication information and is being refused access ... but should try again. (Most often, the username/password was not provided).

403 Forbidden

The client is not permitted to access the resource requested, and should kindly bugger off. (Most often, the username/password was received, but is not correct.)

404 Not Found

There is no resource at the address provided, nor is there any redirect in place.

405 Method Not Allowed

The method of request (GET, POST,HEAD, etc.) is unacceptable and the server cannot (or will not) process the request by switching automatically to the client's preference.

406 Not Acceptable

The client has specified conditions regarding the data it will accept in response, and the server cannot fulfill them.

408 Request Timeout

The server got tired of waiting for the client to finish making its request.

410 Gone

Not only is there no resource available at the location requested (as in the 404 error), but it has been intentionally removed and nothing will be put in that location. The client should not ask for it again, ever.

413 Request Too Large

The amount of data provided as a request is larger than the server is configured to accept. Be more terse.

414 Request-URI Too Long

Similar to 413, but this pertains to the amount of data sent as part of the URI (a fat query-string is usually to blame).

418 IÕm a Little Teapot

Programmers have a weird sense of humor. 'Nuff said.

423 Locked

The resource requested is currently in a "locked" state (usually for editing by another user).

426 Upgrade Required

The client is using an earlier version of HTTP syntax under which the response will not be usable.


500 Series (Server Error)

500 Internal Server Error

A generic error message, generally sent when no other message is entirely suitable. Most often, a server-side error in executing a CGI script.

501 Not Implemented

The request method is unrecognized by the server, and it's not sure how to respond.

503 Service Unavailable

The server has made a request of another system in order to respond to the client, but the other system seems to be temporarily unavailable.

504 Gateway Timeout

The server has made a request of another system in order to respond to the client, but the other system has not responded in an acceptable amount of time.

505 HTTP Version Not Supported

The server does not recognize the HTTP version specified by the client. It may be invlaid, or the server may be out of date.

507 Insufficient Storage

The server does not have enough available hard drive space to process the request.

509 Bandwidth Limit Exceeded

Returned to a client by the server when the client has exceeded its quota for data transfer; or possibly from a prozy server when the server has exceeded its quota.