The 3XX redirection status code class signifies that a client must take further action for the request to be completed.
If HEAD or GET methods are used in the second http request, the user agent (e.g. Googlebot) may complete the additional action without any user interaction. The user agent has the ability to automatically direct any request. The user agent must detect and intervene to thwart cyclical redirects.
300 Multiple Choices
The client has several resource options to choose from through agent-driven content negotiation. For example, this code can be used to introduce various video format options, as well as to recommend word-sense disambiguation and to list files with differing filename extensions.
301 Moved Permanently
The current, along with all future, requests, should be sent to the given URL.
302 Found is a great example of industry practice contradicting the standard. The HTTP/1.0 specification (RFC 1945) forced the client to perform a temporary redirect. Originally, the describing phase was “Moved Temporarily,” but popular browsers employed 302 with a 303’s functionality. As a result, HTTP/1.1 included status codes 303 and 307 to differentiate between the two behaviors. Still, some Web frameworks and applications utilize the 302 status code just as if it were the 303 .
303 See Other (since HTTP/1.1)
Using the GET method, this means that the response to a request can be located under a different URL. If a client receives this message in response to a POST or PUT/DELETE, they should assume that the server has collected the data and should issue a redirect with a distinct GET message.
304 Not Modified (RFC 7232)
This means that the resource has not been altered since the version specified by the request headers If-Modified-Since or If-None-Match. In this instance, the resource will not need to be retransmitted because the client has a copy that was downloaded previously.
305 Use Proxy (since HTTP/1.1)
The needed resource can only be accessed through a proxy. The response includes the address. Some HTTP clients, including Internet Explorer and Mozilla can’t correctly manage responses with this status code. This is mainly because of security concerns.
306 Switch Proxy
306 Switch Proxy is no longer used as a status code, but once indicated that “subsequent requests should use the specified proxy”.
307 Temporary Redirect (since HTTP/1.1)
Make the request again using a different URL; however, use the original URL for all requests in the future. This differs from how 302 was initially implemented or when the request method isn’t allowed to be changed when re-sending the first request. For example, a POST request can only be repeated with another POST request.
308 Permanent Redirect (RFC 7538)
Use a different URL for current requests and those subsequent to it. 307 and 308 follow the behavior pattern of 302 and 301, but don’t allow the HTTP method to be altered. For example, sending a form to a resource that has been permanently redirected may continue without any problems.