HTTP Status Codes / 3xx HTTP Status Codes

3xx HTTP Status Codes

3xx status codes tell the client to take another action to complete the request.

This is an educational guide. The pages linked here are documentation pages served as 200 OK, even when the HTTP status code being explained is an error response.

What 3xx means

Redirection responses tell the client that another request is needed to complete the operation. The Location header usually identifies the target URL.

Where 3xx responses appear

Implementation notes

All 3xx status codes

CodeNameMeaning
300Multiple ChoicesIndicates multiple options for the resource from which the client may choose (via agent-driven content negotiation). For example, this code could be used to present multiple video format options, to list files with different filename extensions, or to suggest word-sense disambiguation.
301Moved PermanentlyThe target resource has been assigned a new permanent URI. The server sends that URI in the Location header, and clients should use it for future requests.
302FoundTells the client to look at (browse to) another URL. The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary move with the same method (the original describing phrase was "Moved Temporarily"), but popular browsers implemented 302 responses by changing the method to GET. Therefore, HTTP/1.1 added status codes 303 and 307 to distinguish between the two behaviours.
303See OtherThe response to the request can be found under another URI using the GET method. When received in response to a POST (or PUT/DELETE), the client should presume that the server has received the data and should issue a new GET request to the given URI.
304Not ModifiedIndicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match. In such case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.
305Use ProxyThe requested resource is available only through a proxy, the address for which is provided in the response. For security reasons, many HTTP clients (such as Mozilla Firefox and Internet Explorer) do not obey this status code.
306Switch ProxyNo longer used. Originally meant "Subsequent requests should use the specified proxy."
307Temporary RedirectIn this case, the request should be repeated with another URI; however, future requests should still use the original URI. In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request. For example, a POST request should be repeated using another POST request.
308Permanent RedirectThis and all future requests should be directed to the given URI. 308 parallel the behaviour of 301, but does not allow the HTTP method to change. So, for example, submitting a form to a permanently moved resource may continue smoothly.

HTTP status code lookup
By Ping Now, a website/API/service uptime monitor
Data from Wikipedia