Overview

What you're looking for has moved, but only temporarily.

Takeaways

  1. The 307 Temporary Redirect status response code indicates that the resource requested has been temporarily moved to the URL given by the Location headers.
  2. The method and the body of the original request are reused to perform the redirected request.
  3. In the cases where you want the method used to be changed to GET, use 303 See Other instead. This is useful when you want to give an answer to a PUT method that is not the uploaded resources, but a confirmation message (like "You successfully uploaded XYZ").
  4. The only difference between 307 and 302 is that 307 guarantees that the method and the body will not be changed when the redirected request is made.
  5. With 302, some old clients were incorrectly changing the method to GET: the behaviour with non-GET methods and 302 is then unpredictable on the Web, whereas the behaviour with 307 is predictable. For GET requests, their behaviour is identical.

Information

The target resource resides temporarily under a different URI and the user agent must not change the request method if it performs an automatic redirection to that URI.

Since the redirection can change over time, the client ought to continue using the original effective request URI for future requests.

The server should generate a Location header field in the response containing a URI reference for the different URI. The user agent may use the Location field value for automatic redirection. The server's response payload usually contains a short hypertext note with a hyperlink to the different URI(s).

Related

Further Reading

Specification

307 Temporary Redirect | The HTTP Working Group

307 Temporary Redirect

MDN web docs

Location header field

MDN web docs