307 Temporary Redirect は、対象のリソースが一時的に Location ヘッダーの URL にあり、クライアントはリダイレクトをたどる際にリクエストメソッドを変更してはならないことを示します。POST は同じボディを持つ POST のまま、PUT は PUT のままです。以降のリクエストは、引き続き元の URL に送る必要があります。307 はデフォルトではキャッシュされません。
HTTP/1.1 で 307 が追加されたのは、302 Found のあいまいさを解消するためです。ブラウザーは、POST に対する 302 を GET でたどります。API エンドポイント、アップロード、フォームの POST の一時的なリダイレクトなど、メソッドを維持する必要がある場面で使ってください。
HSTS を使っているサイトの http:// アドレスを入力すると、ブラウザーのデベロッパーツールに 307 Internal Redirect と表示されることがあります。このリダイレクトはブラウザー自身が HSTS リストに基づいて生成したもので、サーバーには届いていません。サーバー自身のリダイレクトは 301 であることも十分ありえます。サーバーが実際に何を送っているかは、TrueURL の HTTPS リダイレクトチェッカーのようなサーバーサイドのチェックで確認できます。
レスポンス例
HTTP
HTTP/1.1 307 Temporary Redirect
Date: Fri, 06 Nov 2026 10:15:32 GMT
Location: https://eu.api.example.com/v1/upload
Cache-Control: no-store
Content-Length: 0 SEO とリダイレクトチェック
よくある原因と主な用途
- API やアップロード用のエンドポイントが一時的に移動しており、
POSTのボディをリダイレクト後も維持する必要がある場合。 - メンテナンス、負荷分散、地域別のルーティングによって、リクエストを一時的に別の場所へ送っている場合。
- フレームワークのデフォルトの一時的なリダイレクト。たとえば
permanent: falseを指定した Next.js や、Starlette と FastAPI のRedirectResponseです。 - ブラウザーのデベロッパーツールに表示される HSTS の「307 Internal Redirect」。これはサーバーではなく、ブラウザーが生成したものです。