どこかで「404 NOT FOUND」という表示を見かけたことはありませんか?
もしくは、サイト移転したときに「301リダイレクトが必要」などという話を聞いたことがあるかもしれません。
こういった通信状況を表す数字をHTTPステータスコードと呼びます。
この記事ではあまり詳しくない人でもしっかり理解ができるよう、
- HTTPステータスコードの概要
- HTTPステータスコードの確認方法
- 各HTTPステータスコードの意味
について詳しくまとめました。
HTTPステータスコードとは
まずHTTPというのは「Hypertext Transfer Protocol」の略で、Webブラウザがサーバーと通信する際に用いられるプロトコル(決まりごと)を意味します。
インターネットでコンテンツを閲覧する際に、通信処理時に採用されているルールのことですね。
実はURLがhttp://
で始まるのも「HTTPに従って通信します」ということを意味しています。
そのHTTP通信において、通信相手(サーバー)からの応答がどういう状況なのかを表す3桁の数字をHTTPステータスコードと読んでいます。
100番代〜500番代まであり、それぞれに意味があるんですね。
有名なのは冒頭で触れた301や404ではないでしょうか。
HTTPステータスコードの確認方法
前提知識として、ネット通信において「情報がほしい」と要求することを「リクエスト」、要求された情報を送り返すことを「レスポンス」といいます。
ブラウザでコンテンツを閲覧する際は、ブラウザがリクエストを送り、サーバーがレスポンスを返すんですね。
HTTPステータスコードは、レスポンスの中にある「ヘッダー」に記載されています。
Google Chromeであれば検証モードを使うことで簡単にHTTPヘッダーの中身を確認できますので、下記記事を参考に見てみてください。
各HTTPステータスコードの意味
HTTPステータスコードは、100番代、200番代、300番代、400番代、500番代でそれぞれ主な意味が変わります。
100番代のステータスコード
ブラウザなどからのリクエストが相手に受け取られて、継続的に処理が行われることを意味します。
100 Continue | 継続中 |
101 Switching Protocols | サーバーがリクエストを実行するためにプロトコルの切り替えを要求している |
102 Processing | 処理中 |
103 Early Hints | レスポンスヘッダが確定する前に、こうなるであろうと予測されるヘッダを送り返した |
200番代のステータスコード
リクエストは正常に受け取られ、相手に正しく処理されたことを意味します。
200 OK | 正常に処理された |
201 Created | リクエストが完了し、新たに作成されたURIが送り返された |
202 Accepted | リクエストが受付られた。ただし処理は完了していない |
203 Non-Authoritative Information | 信頼できない情報 |
204 No Content | リクエストを受け付けたが、返すべきレスポンスが存在しない |
205 Reset Content | リクエストを受け付け、画面リセットを実施 |
206 Partial Content | 部分的な情報取得がリクエストされ、受理された |
207 Multi-Status | 複数のステータス |
208 Already Reported | すでに報告済 |
226 IM Used | IM使用 |
300番代のステータスコード
リクエストを完了させるために、追加で処理が必要なことを意味します。
300 Multiple Choices | リクエストしたリソースが複数存在 |
301 Moved Permanently | コンテンツが別の場所に移動済みで、戻ることがない |
302 Found | コンテンツが一時的に移動されていて、移動先が判明 |
303 See Other | 他を参照する必要あり |
304 Not Modified | リクエストしたものは未更新 |
305 Use Proxy | プロキシの使用が必要 |
306 | ※これは現時点で使われていないステータスコードです。 (将来的に利用される予定で、番号だけ確保されている状態) |
307 Temporary Redirect | 一時的にコンテンツが一時的に移動している |
308 Permanent Redirect | コンテンツが別の場所に移動済みで、戻ることがない ※301の規格外の利用が増えたため、301本来の使用法を改めて定義したもの |
400番代のステータスコード
リクエストに誤りがあったことを意味します。
400 Bad Request | リクエストが不正 |
401 Unauthorized | 処理に認証が必要 |
402 Payment Required | 処理に支払いが必要 |
403 Forbidden | コンテンツへのアクセス禁止 |
404 Not Found | ページが見つからない |
405 Method Not Allowed | 許可されていないメソッドの実行 |
406 Not Acceptable | 受理できない |
407 Proxy Authentication Required | プロキシ認証が必要 |
408 Request Timeout | リクエストが時間内に完了しなかった |
409 Conflict | 現在のリソースと競合するためリクエストは完了できない |
410 Gone | リソースが移動もしくは消滅して二度と復活しない |
411 Length Required | HTTPヘッダ内にContent-Lengthがないためサーバーがアクセス拒否 |
412 Precondition Failed | 前提条件で失敗 |
413 Payload Too Large | 大きすぎるペイロード |
414 URI Too Long | URIが長すぎるため、サーバーが処理を拒否 |
415 Unsupported Media Type | サポートされていないメディアが扱われた |
416 Range Not Satisfiable | 実際のリソースのデータサイズを超えるデータをリクエストしてしまった |
417 Expectation Failed | Expectヘッダによる拡張失敗 |
418 I’m a teapot | 私はティーポット ※冗談で設けられたコード |
421 Misdirected Request | 誤ったリクエストの送信 |
422 Unprocessable Entity | 処理できないエンティティ |
423 Locked | ロックされている |
424 Failed Dependency | 依存関係で失敗 |
425 Too Early | Early dataを受け入れない |
426 Upgrade Required | アップグレードが必要 |
428 Precondition Required | 事前条件が必要 |
429 Too Many Requests | 短時間に大量のリクエストがあったため、サーバが処理を拒否 |
431 Request Header Fields Too Large | リクエストヘッダーフィールドのデータが大きすぎるためサーバーが処理を拒否 |
451 Unavailable For Legal Reasons | 法的な理由による利用不可 |
500番代のステータスコード
相手サーバーがリクエストの処理に失敗したことを意味します。
500 Internal Server Error | サーバー内部でエラー発生 例えば、PHPプログラムに文法エラーがあったり設定に誤りがあった場合に501となる |
501 Not Implemented | 実装されていないプログラムを実施 |
502 Bad Gateway | 不正なゲートウェイ |
503 Service Unavailable | メンテナンス等でサービスが利用不可 |
504 Gateway Timeout | ゲートウェイ・プロキシサーバからの適切なレスポンスがないままタイムアウト |
505 HTTP Version Not Supported | HTTPのバージョンが未サポート |
506 Variant Also Negotiates | Transparent Content Negotiation in HTTPで定義されている拡張ステータスコード |
507 Insufficient Storage | 容量不足 |
508 Loop Detected | ループを検出 |
510 Not Extended | 拡張できない |
511 Network Authentication Required | ネットワークに対する認証が必要 |
まとめ
HTTPステータスコードは、正直なところネットワーク関連の専門知識がないと理解しきれない内容もあります。
ただし、200、301、302、404、500は見かけることが多いので覚えておくとよいです。
200:正常にリクエストを処理
301:コンテンツが別の場所に移動済みで、戻ることがない
302:コンテンツが一時的に移動されていて、移動先が判明
404:ページが見つからない
500:サーバー内部でエラー発生
特に301と302の使い分けをはっきりさせておきましょう。
コンテンツを一時的に移動させた場合は302、移動させてもとに戻すことがないときは301です。
サイトを移転させた場合は、もともとのURLで閲覧しようとしたときに301のステータスコードを返すように設定しておく必要があるんですね。
サイト移転時に301リダイレクトを設定する方法は、別の記事でまとめておきます。
コメント