どこへ案内された?
302 は「リソースは確かにあるけれど、いま一時的に別の場所にあるから、そっちを見てね」というサインです。 渡り廊下で先生が「今日だけ職員室は会議で使えないから、用事は図書室で受け付けるよ」と臨時の案内をくれる——あの「今日限りの代替案内」に似ています。
歴史的に最も使われてきた一時リダイレクトで、ログイン後の遷移や POST 後のリダイレクトに広く利用されてきました。ただし「メソッドが変わる/変わらない」の挙動が曖昧だったため、現代では用途に応じて 303 や 307 の使い分けが推奨されます。
渡り廊下からのひとこと
学校では、いつもの教室が使えない日があります。「今日は3年A組は会議室を使うので、休み時間は別の教室で過ごして」と先生が言えば、生徒はその日だけ別の場所に移動し、明日からはまた元の教室に戻ります。臨時の措置だとわかっているから、引っ越したわけじゃない。
302 もそれと同じで、「いまだけ違う場所、次回はまた元のところを試して」という臨時の案内です。クライアントもキャッシュも、原則として元の URL を覚え続けます。
たどり着くまで
案内に従うときの一歩:
LocationヘッダのURLへ移動:そのリクエストはそちらで完了させる- 元の URL は記憶しておく:恒久移動ではないので参照は残す
- メソッドの扱いに注意:POST→GET に変わる古い実装が多いため明示的に確認
- 用途に応じて 303 や 307 を選ぶ (管理者向け):意図がはっきりするコードに置き換えると安全
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 302 Found
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>302 Found</h1></body></html>