3xx Redirection · RFC 9110 §15.4.8

307 Temporary Redirect

A temporary redirect that preserves the request method and body.

What 307 means

Like 302 but strict: a POST stays a POST, with the same body, at the new location. Use it when a temporary move must not turn a write into a read.

Browsers also generate an internal 307 for HSTS upgrades from http:// to https://; it appears in DevTools but never crosses the network.

Common causes

  • A maintenance or failover redirect for an API endpoint.
  • HSTS upgrade shown by the browser.

How to fix it

  • Nothing to fix if intended. For a permanent method-preserving move use 308.

What it looks like

A typical response:

HTTP/1.1 307 Temporary Redirect
Location: https://api-standby.example.com/v1/orders

The same event in an nginx access log (the status is the number after the request line):

203.0.113.7 - - [10/Sep/2026:10:12:01 +0000] "GET /api/orders HTTP/1.1" 307 153 "-" "Mozilla/5.0"

Check it with curl

-i prints the status line and headers, and -w '%{http_code}' prints only the number, which is handy in scripts and health checks. Replace the URL with yours:

curl -i -L --max-redirs 5 https://example.com/old-path

Compare what curl sees with what the browser sees. A different status from the same URL usually means a cache, a CDN edge or a cookie is in the way.

Investigating a run of 307s? Paste the log excerpt into Log Share to get line numbers, highlighting and an expiring link for whoever is on call with you.

  • 302Found: A temporary redirect; clients should keep using the original URL in future.
  • 308Permanent Redirect: A permanent redirect that preserves the request method and body.
  • 303See Other: The result is at another URL; fetch it with GET.

FAQ

What is "307 Internal Redirect" in Chrome DevTools?

The browser upgrading an http:// request to https:// because the site sent Strict-Transport-Security earlier. No request went to the server over HTTP.