ビューティフルWebコード

美しいWebサイトのコーディングについて説明をしていきます。

画面のURLのHTTPステータスコードを考察しよう!

ステータスコードを整理しよう!

200 OK

通常のView表示です。正常に処理が行われました。


400 BadRequest

URLのQueryStringが異常な場合などに利用したりします。

QueryStringの異常の場合、Not Foundを使っても違和感がないと思うので、使うかどうかは検討してください。


401 Unauthorized

Basic認証などが設定されている場合にWebサーバーが返します。

Webサイトの実装として、認証ができなかった場合にこのステータスを返す設計をすることもあります。


403 Forbidden

アクセス権限がない場合にWebサーバーが返します。

サイト側の実装としては、ユーザのランクや権限に応じてアクセスできない場合、このステータスを返す設計をすることもあります。


404 NotFound

よく知られたステータスコードです。

静的なリソースファイルが存在しない場合、Webサーバーが返します。

Controller、Actionへのルーティングができなかったときに、フレームワークが返します。

パラメータをURLに含めるURL設計の場合、対象のパラメータのデータが存在しなかったときに、プログラムにて自前で返す場合もあります。


405 Method Not Allowed

GETしか受け付けないURLでPOSTでアクセスがあった、など、ルーティングできない場合に、フレームワークによっては、フレームワークが勝手に返します。

400 BadRequestが利用されることもあります。


500 InternalServerError

プログラムで例外が発生し、フレームワークで処理されなかった場合、Webサーバーが返します。

共通エラーハンドラーでプログラムで処理した場合でも、エラー画面を表示するときにはこのステータスで返します。


503 ServiceUnavailable

メンテナンスモードです。
フレームワークで対応するのかWebサーバーで対応するのか、要検討してください。


考察

QueryStringなどの入力値異常をBad RequestとするのかNot Foundとするのか、方針を統一しておくといいと思います。

ステータスコードのエラー画面を準備しよう!

サイトとして考えられるHTTPステータスコードを検討しておくと、とても幸せになります。

Webのプログラムの処理が入る前に、Gatewayや、Webサーバーがステータスコードを返す場合もあります。GatewayやWebサーバーがエラーを返す場合、各ステータスに応じた静的なHTMLを配置しておくと良いと思います。

Apacheが返すエラー画面が表示されてしまうと、サーバーにApacheを利用していることがばれてしまい、セキュリティ、ユーザビリティの観点であまりよろしくありません。