Each Status-Code is described below, including a description of which method(s) it can follow and any metainformation required in the response.
Informational
1xx
This class of status code indicates a provisional response, consisting only
of the Status-Line and optional headers, and is terminated by an empty line.
Since HTTP/1.0 did not define any 1xx status codes, servers should not send
a 1xx response to an HTTP/1.0 client except under experimental conditions.
100
Continue
The client may continue with its request. This interim response is used to inform
the client that the initial part of the request has been received and has not
yet been rejected by the server. The client should continue by sending the remainder
of the request or, if the request has already been completed, ignore this response.
The server must send a final response after the request has been completed.
101
Switching Protocols
The server understands and is willing to comply with the client's request, via
the Upgrade message header field, for a change in the application protocol being
used on this connection. The server will switch protocols to those defined by
the response's Upgrade header field immediately after the empty line which terminates
the 101 response.
The protocol should only be switched when it is advantageous to do so. For example,
switching to a newer version of HTTP is advantageous over older versions, and
switching to a real-time, synchronous protocol may be advantageous when delivering
resources that use such features.
Successful 2xx
This class of status code indicates that the client's request was successfully
received, understood, and accepted.
200
OK
The request has succeeded. The information returned with the response is dependent
on the method used in the request, as follows:
GET
an entity corresponding to the requested resource is sent in the response;
HEAD the response must only contain the header information and no Entity-Body;
POST an entity describing or containing the result of the action;
TRACE an entity containing the request message as received by
the end server;
otherwise, an entity describing the result of the action; If the entity corresponds
to a resource, the response may include a Location header field giving the actual
location of that specific resource for later reference.
201
Created
The request has been fulfilled and resulted in a new resource being created.
The newly created resource can be referenced by the URI(s) returned in the URI-header
field and/or the entity of the response, with the most specific URL for the
resource given by a Location header field. The origin server should create the
resource before using this Status-Code. If the action cannot be carried out
immediately, the server must include in the response body a description of when
the resource will be available; otherwise, the server should respond with 202
(accepted).
202
Accepted
The request has been accepted for processing, but the processing has not been
completed. The request may or may not eventually be acted upon, as it may be
disallowed when processing actually takes place. There is no facility for re-sending
a status code from an asynchronous operation such as this.
The 202 response is intentionally non-committal. Its purpose is to allow a server
to accept a request for some other process (perhaps a batch-oriented process
that is only run once per day) without requiring that the user agent's connection
to the server persist until the process is completed. The entity returned with
this response should include an indication of the request's current status and
either a pointer to a status monitor or some estimate of when the user can expect
the request to be fulfilled.
203 Non-Authoritative Information
The returned metainformation in the Entity-Header is not the definitive set
as available from the origin server, but is gathered from a local or a third-party
copy. The set presented may be a subset or superset of the original version.
For example, including local annotation information about the resource may result
in a superset of the metainformation known by the origin server. Use of this
response code is not required and is only appropriate when the response would
otherwise be 200 (ok).
204
No Content
The server has fulfilled the request but there is no new information to send
back. If the client is a user agent, it should not change its document view
from that which caused the request to be generated. This response is primarily
intended to allow input for actions to take place without causing a change to
the user agent's active document view. The response may include new metainformation
in the form of entity headers, which should apply to the document currently
in the user agent's active view.
The 204 response must not include an entity body, and thus is always ternminated
by the first empty line after the header fields.
205 Reset Content
The server has fulfilled the request and the user agent should reset the document
view which caused the request to be generated. This response is primarily intended
to allow input for actions to take place via user input, followed by a clearing
of the form in which the input is given so that the user can easily initiate
another input action. The response must include a Content-Length with a value
of zero (0) and no entity body.
206
Partial Content
The server has fulfilled the partial GET request for the resource. The request
must have included a Range header field (Section 10.33) indicating the desired
range. The response must include a Content-Range header field indicating the
range included with this response. All entity header fields in the response
must describe the actual entity transmitted rather than what would have been
transmitted in a full response. In particular, the Content-Length header field
in the response must match the actual number of OCTETs transmitted in the entity
body. It is assumed that the client already has the complete entity's header
field data.
Redirection
3xx
This class of status code indicates that further action needs to be taken by
the user agent in order to fulfill the request. The action required may be carried
out by the user agent without interaction with the user if and only if the method
used in the second request is GET or HEAD. A user agent should never automatically
redirect a request more than 5 times, since such redirections usually indicate
an infinite loop.
300
Multiple Choices
The requested resource is available at one or more locations and a preferred
location could not be determined via preemptive content negotiation (Section
12). Unless it was a HEAD request, the response should include an entity containing
a list of resource characteristics and locations from which the user or user
agent can choose the one most appropriate. The entity format is specified by
the media type given in the Content-Type header field. Depending upon the format
and the capabilities of the user agent, selection of the most appropriate choice
may be performed automatically. If the server has a preferred choice, it should
include the URL in a Location field; user agents not capable of complex selection
may use this field value for automatic redirection. This response is cachable
unless indicated otherwise.
301
Moved Permanently
The requested resource has been assigned a new permanent URI and any future
references to this resource should be done using one of the returned URIs. Clients
with link editing capabilities should automatically relink references to the
Request-URI to one or more of the new references returned by the server, where
possible. This response is cachable unless indicated otherwise.
If the new URI is a single location, its URL must be given by the Location field
in the response. If more than one URI exists for the resource, the primary URL
should be given in the Location field and the other URIs given in one or more
URI-header fields. Unless it was a HEAD request, the Entity-Body of the response
should contain a short hypertext note with a hyperlink to the new URI(s).
If the 301 status code is received in response to a request other than GET or HEAD, the user agent must not automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.
302 Moved Temporarily
The requested resource resides temporarily under a different URI. Since the
redirection may be altered on occasion, the client should continue to use the
Request-URI for future requests. This response is only cachable if indicated
by a Cache-Control or Expires header field.
If the new URI is a single location, its URL must be given by the Location field
in the response. If more than one URI exists for the resource, the primary URL
should be given in the Location field and the other URIs given in one or more
URI-header fields. Unless it was a HEAD request, the Entity-Body of the response
should contain a short hypertext note with a hyperlink to the new URI(s).
If the 302 status code is received in response to a request other than GET or HEAD, the user agent must not automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.
303 See Other
The response to the request can be found under a different URI and should be
retrieved using a GET method on that resource. This method exists primarily
to allow the output of a POST-activated script to redirect the user agent to
a selected resource. The new resource is not a replacement reference for the
original Request-URI. The 303 response is not cachable, but the response to
the second request may be cachable.
If the new URI is a single location, its URL must be given by the Location field
in the response. If more than one URI exists for the resource, the primary URL
should be given in the Location field and the other URIs given in one or more
URI-header fields. Unless it was a HEAD request, the Entity-Body of the response
should contain a short hypertext note with a hyperlink to the new URI(s).
304 Not Modified
If the client has performed a conditional GET request and access is allowed,
but the document has not been modified since the date and time specified in
the If-Modified-Since field, the server must respond with this status code and
not send an Entity-Body to the client. Header fields contained in the response
should only include information which is relevant to cache managers or which
may have changed independently of the entity's Last-Modified date. Examples
of relevant header fields include: Date, Server, Content-Length, Content-MD5,
Content-Version, Cache-Control and Expires.
A cache should update its cached entity to reflect any new field values given
in the 304 response. If the new field values indicate that the cached entity
differs from the current resource (as would be indicated by a change in Content-Length,
Content-MD5, or Content-Version), then the cache must disregard the 304 response
and repeat the request without an If-Modified-Since field.
The 304 response must not include an entity body, and thus is always ternminated by the first empty line after the header fields.
305 Use Proxy
The requested resource must be accessed through the proxy given by the Location
field in the response. In other words, this is a proxy redirect.
Client
Error 4xx
The 4xx class of status code is intended for cases in which the client seems
to have erred. If the client has not completed the request when a 4xx code is
received, it should immediately cease sending data to the server. Except when
responding to a HEAD request, the server should include an entity containing
an explanation of the error situation, and whether it is a temporary or permanent
condition. These status codes are applicable to any request method.
Note: If the client
is sending data, server implementations on TCP should be careful to ensure that
the client acknowledges receipt of the packet(s) containing the response prior
to closing the input connection. If the client continues sending data to the
server after the close, the server's controller will send a reset packet to
the client, which may erase the client's unacknowledged input buffers before
they can be read and interpreted by the HTTP application.
400 Bad Request
The request could not be understood by the server due to malformed syntax. The
client should not repeat the request without modifications.
401
Unauthorized
The request requires user authentication. The response must include a WWW-Authenticate
header field containing a challenge applicable to the requested resource. The
client may repeat the request with a suitable Authorization header field . If
the request already included Authorization credentials, then the 401 response
indicates that authorization has been refused for those credentials. If the
401 response contains the same challenge as the prior response, and the user
agent has already attempted authentication at least once, then the user should
be presented the entity that was given in the response, since that entity may
include relevant diagnostic information.
402
Payment Required
This code is reserved for future use.
403
Forbidden
The server understood the request, but is refusing to fulfill it. Authorization
will not help and the request should not be repeated. If the request method
was not HEAD and the server wishes to make public why the request has not been
fulfilled, it should describe the reason for the refusal in the entity body.
This status code is commonly used when the server does not wish to reveal exactly
why the request has been refused, or when no other response is applicable.
404
Not Found
The server has not found anything matching the Request-URI. No indication is
given of whether the condition is temporary or permanent. If the server does
not wish to make this information available to the client, the status code 403
(forbidden) can be used instead. The 410 (gone) status code should be used if
the server knows, through some internally configurable mechanism, that an old
resource is permanently unavailable and has no forwarding address.
405
Method Not Allowed
The method specified in the Request-Line is not allowed for the resource identified
by the Request-URI. The response must include an Allow header containing a list
of valid methods for the requested resource.
406
None Acceptable
The server has found a resource matching the Request-URI, but not one that satisfies
the conditions identified by the Accept and Accept-Encoding request headers.
Unless it was a HEAD request, the response should include an entity containing
a list of resource characteristics and locations from which the user or user
agent can choose the one most appropriate. The entity format is specified by
the media type given in the Content-Type header field. Depending upon the format
and the capabilities of the user agent, selection of the most appropriate choice
may be performed automatically.
407
Proxy Authentication Required
This code is similar to 401 (unauthorized), but indicates that the client must
first authenticate itself with the proxy. The proxy must return a Proxy-Authenticate
header field containing a challenge applicable to the proxy for the requested
resource. The client may repeat the request with a suitable Proxy-Authorization
header field.
408
Request Timeout
The client did not produce a request within the time that the server was prepared
to wait. The client may repeat the request without modifications at any later
time.
409
Conflict
The request could not be completed due to a conflict with the current state
of the resource. This code is only allowed in situations where it is expected
that the user may be able to resolve the conflict and resubmit the request.
The response body should include enough information for the user to recognize
the source of the conflict. Ideally, the response entity would include enough
information for the user or user-agent to fix the problem; however, that may
not be possible and is not required.
Conflicts are most likely to occur in response to a PUT or PATCH request. If
versioning is being used and the entity being PUT or PATCHed includes changes
to a resource which conflict with those made by an earlier (third-party) request,
the server may use the 409 response to indicate that it can't complete the request.
In this case, the response entity should contain a list of the differences between
the two versions in a format defined by the response Content-Type.
410 Gone
The requested resource is no longer available at the server and no forwarding
address is known. This condition should be considered permanent. Clients with
link editing capabilities should delete references to the Request-URI after
user approval. If the server does not know, or has no facility to determine,
whether or not the condition is permanent, the status code 404 (not found) should
be used instead. This response is cachable unless indicated otherwise.
The 410 response is primarily intended to assist the task of web maintenance
by notifying the recipient that the resource is intentionally unavailable and
that the server owners desire that remote links to that resource be removed.
Such an event is common for limited-time, promotional services and for resources
belonging to individuals no longer working at the server's site. It is not necessary
to mark all permanently unavailable resources as "gone" or to keep
the mark for any length of time -- that is left to the discretion of the server
owner.
411 Length Required
The server refuses to accept the request without a defined Content-Length.
The client may repeat the request if it adds a valid Content-Length header field
containing the length of the entity body in the request message.
412
Unless True
The condition given in the Unless request-header field (Section 10.40) evaluated
to true when it was tested on the server and the request did not include a Range
header field (which would indicate a partial GET) or an If-Modified-Since header
field (which would indicate a conditional GET). This response code allows the
client to place arbitrary preconditions on the current resource metainformation
(header field data) and thus prevent the requested method from being applied
to a resource other than the one intended.
Server
Error 5xx
Response status codes beginning with the digit "5" indicate cases
in which the server is aware that it has erred or is incapable of performing
the request. If the client has not completed the request when a 5xx code is
received, it should immediately cease sending data to the server. Except when
responding to a HEAD request, the server should include an entity containing
an explanation of the error situation, and whether it is a temporary or permanent
condition. These response codes are applicable to any request method and there
are no required header fields.
500
Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling
the request.
501
Not Implemented
The server does not support the functionality required to fulfill the request.
This is the appropriate response when the server does not recognize the request
method and is not capable of supporting it for any resource.
502
Bad Gateway
The server, while acting as a gateway or proxy, received an invalid response
from the upstream server it accessed in attempting to fulfill the request.
503
Service Unavailable
The server is currently unable to handle the request due to a temporary overloading
or maintenance of the server. The implication is that this is a temporary condition
which will be alleviated after some delay. If known, the length of the delay
may be indicated in a Retry-After header. If no Retry-After is given, the client
should handle the response as it would for a 500 response.
Note: The existence
of the 503 status code does not imply that a server must use it when becoming
overloaded. Some servers may wish to simply refuse the connection.
504 Gateway Timeout
The server, while acting as a gateway or proxy, did not receive a timely response
from the upstream server it accessed in attempting to complete the request.