307 Temporary Redirect
Like 302, but strict: the client must repeat the request to the new URL with the same method and body. A POST stays a POST. This is the redirect you want for temporarily-moved API endpoints and form handlers.
What usually causes it
- HTTPS upgrades via HSTS (browsers synthesize an internal 307)
- Temporarily relocated API endpoints behind gateways
How to debug and fix it
- If POSTs arrive at the target as GETs with empty bodies, something in the chain used 302 — switch it to 307.
- Note that redirecting a POST replays the body; ensure the target endpoint is the intended handler (and idempotency keys survive).
- The 'internal' 307 in browser devtools with no network request is HSTS doing its job, not your server responding.
Easily confused with
Debugging an API? Build and inspect requests, check response headers, or read the full status-code debugging guide.