What does HTTP 307 mean?
Temporary redirect that keeps the request method and body. Unlike 302, a 307 guarantees that a POST stays a POST. Browsers also show an “internal” 307 for HSTS: when a site is on the HSTS list, Chrome upgrades http:// to https:// itself and labels it 307 in DevTools.
3xx Redirection: The client must take another step — usually follow the URL in the Location header — to complete the request.
When you see 307
- HSTS upgrade inside the browser (no request reaches the server).
- Temporary maintenance or load-balancing redirects.
307 and SEO
Treated like 302: the original URL stays indexed.
Example response
HTTP/1.1 307 Temporary Redirect
Location: https://example.com/temporary
How to return a 307 response
Node.js (Express)
res.redirect(307, 'https://example.com/new-url');PHP
header('Location: https://example.com/new-url', true, 307);
exit;Python (Flask)
return redirect('https://example.com/new-url', code=307)Go (net/http)
http.Redirect(w, r, "https://example.com/new-url", 307)nginx
return 307 https://example.com/new-url;
Related status codes
- 302 Found — The resource is temporarily at a different URL, given in the Location header.
- 308 Permanent Redirect — Permanent redirect that keeps the request method and body.
- 301 Moved Permanently — The resource has a new permanent URL, given in the Location header.
Check which status code a URL returns with the HTTP header checker, or trace a redirect chain with the redirect checker.