This table of HTTP status codes is meant to be a quick, albeit incomplete, reference. Many of these codes are not mentioned elsewhere in this book. However, you may encounter them when examining log files or debugging HTTP problems. Refer to Section 10 of RFC 2616 for complete, and official definitions.
This code informs the client that it should proceed with its request. This is useful when the client is sending a large message body. After sending the headers, the client waits for the 100 response, and then proceeds to send the message body.
This code allows clients and servers to negotiate the use of an alternate transfer protocol, or a different version of HTTP.
This code indicates the request was successful. For GET requests, the body of a 200 response contains the entire object requested.
This code informs the client that its request resulted in the successful creation of a new resource, which can now be referenced.
This code means that the client's request was accepted and scheduled for further processing. The request may or may not be successful when eventually acted upon.
This code may be used in place of 200 when the sender has reason to believe the information in the response's entity headers are different than what the origin server would send.
This code is used in cases where the request was successfully processed, but the response doesn't have a message body.
This code is similar to 204. The request was successful and the response doesn't include a message body. Furthermore, this code instructs the client to ``reset the document view,'' for example, by clearing the fields of an HTML form.
This code may be used in response to a range request (a.k.a. partial GET), whereby the client requests only a subset of the object data.
This code informs users and user agents that the resource is available at multiple locations, perhaps in different representations.
This code redirects clients to a new location for the requested resource. This happens often when people relocate files on their servers, or when content is moved from one server to another. Because the redirection is permanent, clients and caches can remember the new location and automatically redirect future requests.
This code is a temporary redirect to a new location. Apparently, many user agents always issue GET requests for the new URI, regardless of the original request method. This action violates even the older HTTP RFCs (1945 and 2068), but has become the expected behavior. RFC 2616 added two new status codes, 303 and 307, to ``fix'' this problem.
This code is the same as 302, except that the client should make a GET request for the new URI, regardless of the original request method.
This code is used when the client makes a conditional
GET request (e.g.
This code allows origin servers to redirect requests
through a caching proxy. The proxy's address is given in
A search of the HTTP working group archives reveals
that, at one time, this code was named
This code is similar to 302, indicating a temporary new location for the resource. However, clients must not use a different request method when requesting the new URI.
This code indicates that the server could not understand the client's request, or found it to be incorrect in some way.
This code is used when access to a resource is protected and the client did not provide valid authentication credentials. Often the 401 response includes information that causes the user agent to prompt the user for a username and password.
This code is reserved, but not yet described in the HTTP/1.1 specifications.
This code indicates that the resource cannot be accessed, regardless of any authentication credentials. For example, this happens if a directory or file is unreadable due to file permissions.
This code indicates that the requested resource does not exist on the server. It may also be used in place of 403 if the server doesn't want to acknowledge that the resource exists, but cannot be accessed.
This code indicates that the request method is inappropriate for the given URI. The response should include a list of methods that are allowed.
This code is used when the client's requirements, as
given in the
This code is similar to 401, but is only returned by proxies. A proxy returns a 407 message upon receipt of a client request that doesn't have valid authentication credentials.
This code is used when a server times out waiting for the client's request.
This code indicates the server's resource is in a state of conflict, such that it cannot satisfy the request. Presumably, the user will be able to resolve the conflict after receiving this response.
This code is used when an origin server knows that the requested resource has been permanently removed.
This code is used when the server requires, but did not receive, a &Contlen; header in the client's request. Requests for some methods, such as POST and PUT, have message bodies by default and therefore require &Contlen; headers.
This code indicates that the request was unsuccessful because one of the client's conditions was not met. For example, the client can tell the server ``only update this resource if the current version is X.'' If the current version is not ``X,'' the server returns a 412 response.
This code is used when a client's request is larger than the server is willing to accept.
This code indicates that the requested URI exceeds the server's limits. Although servers should accept URIs of any length, practical considerations may require actual limits.
This code is returned when a server refuses a request because the message body is in an inappropriate format.
This code indicates that the server could not process the client's partial GET request.
This code indicates that the client's expectation, given
This code is the default for an error condition when none of the other 5xx codes apply.
This code indicates that the server does not implement the necessary features to satisfy the request.
This code indicates that the server received an invalid response from an upstream server.
This code indicates the server is temporarily unable to process the client's request. A server that becomes overloaded may use this code to let the client know that it can retry the request later.
This code is used by proxies and some servers to
indicate a timeout when forwarding the client's request.
It's also used when a request with the
This code indicates that the server refuses to handle this request because of the HTTP version in the request line.