HTML ステータスコードについて
はじめに
お疲れ様です。件の新卒新米インフラエンジニアです。
研修でLinuxを用いてWebサーバーを構築していた際、403エラーが発生しました。これはForbiddenと呼ばれるもので、権限不足が原因となって起こるエラーです。
ふと、これ以外にHTMLのステータスコードはほかにどのようなものがあるのか気になったのでまとめてみました。
200番台
成功レスポンスと言われるコードで、一般的に確認する必要はありません。
200 OK
リクエストが成功したことを示します。
GETメソッドではリソースが読み込まれ、メッセージ本文で転送された際、HEADメソッドではメッセージ本文がなく、表現ヘッダーがレスポンスに含まれている際、PUTあるいはPOSTでは操作の結果を表すリソースがメッセージ本文で送信された際、TRACEではメッセージ本文にサーバーが受け取ったリクエストメッセージが含まれている際に示されます。
201 Created
リクエストが成功し、新しいリソースが作成されたことが示されています。
一般的にPOSTリクエストや、一部のPUTリクエストを送信した際に表示されるレスポンスになります。
300番台
リダイレクトメッセージといわれるメッセージで、遷移の際のメッセージなどがこれに該当します。
301 Moved Permanently
URLが永遠に変更された際にこのメッセージが表示されます。
レスポンスで新しいURLが与えられ、自動的に遷移します。
ハイパーリンクなどで古いページを参照してしまった際に見ることになるだろうと思います。
302 Found
404とは逆のメッセージですが、恐らく一時的に違うURLにリダイレクトした際に利用されるメッセージです。
ただし、今後も直接アクセスしたURLにアクセスするべきです。
400番台
クライアントエラーレスポンスと呼ばれるコードで、有名なNot Foundなどはここに該当します。
401 Unauthorized
このメッセージではUnauthorized、不許可となっていますが、実際の意味としてはUnauthenticated、未承認です。
つまり、クライアントとなる端末がレスポンスを得るには認証を受けなければいけません。
403 Forbidden
クライアントにコンテンツのアクセス権がなく、サーバーがレスポンスを拒否しています。
HTMLファイルのオーナー情報が正しいかなどを確認してみましょう。
401 Unauthorizedとは異なり、クライアントのIDがサーバーに知られているようです。
404 Not Found
もはや説明不要ですが、一応解説しておこうと思います。
リクエストしたリソースが発見できなかった際に送られるメッセージですが、認証されていないクライアントからリソースの存在を隠すためにこのレスポンスを返すこともあるようです。
500番台
サーバーエラーレスポンスと呼ばれるコードで、サーバー側に問題が発生した際に表示されるコードです。
500 Internal Server Error
サーバー側で処理方法がわからない事態が発生しています。
汎用的なエラーで、適切な500番台のステータスコードが見つけられない場合に通知されます。
503 Service Unavailable
サーバーはリクエストを処理する準備ができていません。
一般的には、サーバーがメンテナンスや過負荷でダウンしていることが原因で表示されます。
その他
418 I'm a teapot
サーバーは、ティーポットでコーヒーを淹れようとする試みを拒否します。
と書かれています。
恐らくですが、ジョーク系のメッセージだと思われます。
学んでみての感想、まとめ
まず418についてなのですが、このメッセージは実際に使われる場面が思いつかないことと、以前にジョークメッセージだと聞いたことがあったため今回はジョークメッセージだ、という結論にしましたが、ひょっとしたら使われる場面があるのでしょうか。
また、200番台のメッセージは成功を表し、300番台がリダイレクトの際に用いられるメッセージということはざっくりとわかっていたのですが、今回400番台の内容と500番台の内容についても理解することができました。
特に、新たな学びを得たなと感じるのは401です。実際の意味としては未承認、というところが腑に落ちました。
以前から401と403で、同じようなメッセージがあるのはなぜだろうと考えていたのですが、今回調べてみてよかったです。
ただ、なぜ実際と違う文面になってしまったのだろうという思いが残りましたが……
Discussion