What HTTP 307 means
Unlike 302, a client following 307 must repeat the request with the same method and body, so a POST stays a POST. Browsers also use an internal 307 when HSTS forces HTTP to HTTPS; you will see “307 Internal Redirect” in Chrome DevTools for that.
Retrying
Not applicable: this isn’t an error.
Example response
HTTP/1.1 307 Temporary Redirect
Date: Wed, 21 Oct 2026 10:30:00 GMT
Location: https://api2.example.com/v1/upload
How to return 307
res.redirect(307, '/new-path');
from fastapi.responses import RedirectResponse
return RedirectResponse("/new-path", status_code=307)
http.Redirect(w, r, "/new-path", http.StatusTemporaryRedirect)
location /old-path {
return 307 /new-path;
}
Related status codes
- 308 Permanent Redirect : A permanent redirect that keeps the original method and body.
- 302 Found : A temporary redirect to the URL in the Location header.
- 303 See Other : Redirects the client to another URL, which it should fetch with GET.
Other 3xx status codes
300 Multiple Choices · 301 Moved Permanently · 302 Found · 303 See Other · 304 Not Modified · 308 Permanent Redirect
See the full list of HTTP status codes.
Sources
Spotted a mistake? Email hello@devtoolsmith.com and we’ll fix it.
Frequently asked questions
What does HTTP 307 Temporary Redirect mean?
HTTP 307 Temporary Redirect is a temporary redirect that keeps the original method and body. Unlike 302, a client following 307 must repeat the request with the same method and body, so a POST stays a POST. Browsers also use an internal 307 when HSTS forces HTTP to HTTPS; you will see “307 Internal Redirect” in Chrome DevTools for that.