2010年04月22日

HTTPステータスコードの定義がいつの間にか変わっていた

WebサーバがHTTPリクエストに対するレスポンスに、レスポンスの意味を表現するステータスコードがありますが、いつの間にか定義が変わっているものがありました。

定義が変わったのは302で、従来は「Moved Temporarily」(一時的な移動)だったのですが、今では「Found」というよく分からない意味に変わっていました。

これは、掲示板やWiki等に投稿した後に、投稿用のURLから表示用のURLに移動させる目的で302を乱用していたのが原因で、そのための新しいコードの定義と共に302は意味が変えられました。

これに関連して新しく定義されたコードは303と307です。

303は「See Other」で、別のURLをGETメソッドで取得すると決められています。掲示板などの投稿用アドレスから転送する場合はこのコードを使います。

307は「Temporary Redirect」で、元々の302がこちらに変更になった感じです。303とは違い、リクエストメソッドは変更せずに別のアドレスを参照すると定義されています。例えばPOSTメソッドでアクセスしていたら、転送先のアドレスもPOSTメソッドでアクセスします。

302にはリクエストメソッドに関する決まりが明記されていなかったと思うので、新しいコードで明文化されたのは互換性の点でも良いことだと思います。(301はどうなっているんだろう?)

RFCまでは見ていないので302の新しい定義の意味はよく分かりませんが、互換性のために残されているだけで、新しいアプリケーションでは積極的に使うコードではないということでしょうか?

Webアプリケーションが返すステータスコードなんて200と302くらいしか使わないので長年確認もしていませんでしたが、たまにはチェックしないと駄目ですね。

タグ:Webサービス
2010年04月22日 【プログラミング】 | コメント(0) |

この記事へのトラックバックURL


この記事へのトラックバック
この記事へのコメント

コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。