用語「302」について
302 (さんまるに)
話題 : HTTP
HTTP のステータスコード 302 を指します。RFC2616で定義されています。
302 (Found) は、リクエストされたリソースがその場所ではなく、別の URL に存在する (移転している) 事を示すコードです。301 は移転が恒久的なものであること、クライアントは以後移転先の URL を参照すべき事を意味しますが、302 の場合は、この移転は一時的なものかも知れません。
301 と同様、サーバは同時に以下のようなことをするべき (SHOULD) とされています。
- リソース移転先の URL を示す Location フィールドを出力する。
- 本体の中にリソース移転先へのハイパーリンクを出力する。ただしリクエストが HEAD の時は不要。
この応答を受け取ったクライアントは、たいてい Location フィールドの URL を見て、自動的にその URL へリダイレクトします。しかし、必ずしもリダイレクトするとは限らないので、そのような場合にはユーザが自分でリンクをたどる事も出来るように、移転先へのハイパーリンクも出力する事になっているわけです。
ちなみに、302 の説明語句 (Reason-Phrase) は、RFC2068 までは "Moved Temporarily" とされていましたが、RFC2616 では "Found" と改められています。元々 302 は、「同じメソッドでリダイレクト先にアクセスしなさい」ということを意味していました。しかし、実際は POST リクエストの 302 で GET リクエストでリダイレクトしてしまうクライアントが多く、本来の意味で機能することを期待するのが難しくなっています。
RFC2616 では 307 Temporary Redirect が設けられており、POST を POST のままリダイレクトさせたいような場合はこちらを使うようになっています。また、GET でリダイレクトさせたい場合には 303 See Other を使います。
※303 は前からあったのですが、Netscape4 あたりが対応していなかった……。
「302」に関連する用語
- 「302」にコメントを書く