2024.07.19
ChatGPTにクラス名を付けてもらってみた
- コーディング
色々なWEBサイトを見て回っている時、「403」のような数字が表示されてサイトが見れなかった経験はありませんか?
この数字はサーバーからの返答の一種で、ステータスコードと呼ばれています。
ステータスコードには様々な種類があるため、今回は種類別に詳しく解説したいと思います!
目次
ステータスコードは正しくは「HTTPステータスコード」と言い、Webサーバーからのレスポンスの中のページの状態を表す3桁の数字を指しています。
Webサイトが表示されるまでの流れは下記のようになっています。
リンクをクリックしたり、URLを入力してエンターキーを押すと、ブラウザはアクセスしようとしているWebサーバーにリクエストを送信
↓
サーバーはリクエストを受信、処理をした後、レスポンスを送り返す
(この時、HTTPヘッダー内にページの状態を表すHTTPステータスコードを返しています。)
↓
レスポンスの内容をもとにブラウザはWebサイトを表示
基本的には表示されることはありませんが、エラーのレスポンスが返ってきた場合などにブラウザ上に表示されます。
ステータスコードには大きく分けて100番台〜500番台の5カテゴリーがあります。
各カテゴリーの違いをざっくりと書くと下記のようになります。
ここからは各コードのより細かい数字について解説します!
処理に時間がかかってしまったり、リクエストが継続中であることを示す100番台の主なステータスコードは下記になります。
100 | Continue/継続 サーバーがブラウザのリクエストヘッダーを受信し、リクエスト本文を受け取る準備ができた状態。 |
101 | Switching protocols/プロトコルの切り替え ブラウザがサーバーにプロトコルの変更を要求し、サーバーがそれを受理した状態。 |
103 | Early hints/早期のヒント サーバーの残りのレスポンスの準備が整う前に、先にいくつかのレスポンスヘッダーが返された状態。 |
処理が成功して正常にレスポンスがされた状態であることを示す200番台の主なステータスコードは下記になります。
200 | OK/成功 Webサイト、リソースが期待どおりに動作するときに配信される状態。 |
201 | Created/作成 サーバーがブラウザのリクエストを満たし、新しいリソースを作成した状態。 |
202 | Accepted/受理 サーバーがブラウザのリクエストを受け入れ、処理を行なっている状態。 リクエストは最終的に、レスポンスの完了につながる場合とそうでない場合があります。 |
203 | Non-Authoritative Information/信頼できない情報 プロキシサーバーがオリジンサーバーから200のステータスコードを受信したものの、ブラウザに渡す前にレスポンスを変更した状態。 (プロキシの使用中に表示されることがあります。) |
204 | No Content/内容なし サーバーがリクエストを正常に処理したものの、返すべきコンテンツが存在しない状態。 |
205 | Reset Content/内容のリセット 204番と同じく、サーバーがリクエストを処理したもののコンテンツを返さない状態。 こちらの場合はブラウザの画面を初期化する必要もがあります。 |
206 | Partial Content/部分的内容 ブラウザが一時停止したダウンロードを再開できるだけでなく、ダウンロードを複数のまとまりに分割できる状態。 Rangeヘッダーによりサーバーが要求されたリソースの一部のみを送信する場合、206番が返されます。 (ブラウザがRangeヘッダーを使用している場合、このステータスコードが表示されることがあります。) |
リクエストに追加処理(リダイレクト)が必要である状態であることを示す300番台の主なステータスコードは下記になります。
300 | Multiple Choices/複数の選択 ブラウザのリクエストを満たすためにサーバーが応答できるリソースが複数ある状態で、ブラウザがその中からいずれかを選択する必要がある状態。 使用可能なファイルの拡張子が複数ある場合や、サーバーで単語の意味が曖昧になっている時に発生。 |
301 | Moved Permanently/恒久的に移動 要求されたページが恒久的に移動された状態。 |
302 | Found/発見 要求されたリソースは移動したものの、見つかった状態。 要求されたリソースが予想された場所ではなく、別の場所で見つかったことを示すため、一時的なURLリダイレクトに使用されます。 |
303 | See Other/他を参照せよ ブラウザがPOST、PUT、またはDELETEを介して、リクエストされたリソースを見つけたことをブラウザに伝えた状態。 GETを利用するには、以前に使用したものとは異なるURLに適切なリクエストを行う必要がある。 |
304 | Not Modified/未更新 要求されたリソースが、最後にアクセスしてから変更されていない状態。 ブラウザキャッシュに保存されているリソースが変更されていないことをブラウザに通知。 以前にダウンロードしたリソースを再利用し、ページの配信を高速化するのに使用。 |
307 | Temporary Redirect/一時的リダイレクト リソースが一時的に別のURLに移動されたときの適切な使用法として、302番を再定義する形で導入。 302番とは異なり、HTTPメソッドを変更することができない。 |
308 | Permanent Redirect/恒久的リダイレクト 301番を継承するかたちで誕生。 HTTPメソッドの変更を許可せず、要求されたリソースが新しいURLに永続的に移動されたことを示す。 |
ブラウザからのリクエストに誤りがあり、レスポンスを返せない状態であることを示す400番台の主なステータスコードは下記になります。
400 | Bad Request/不正 サーバーが、クライアント側のエラーのためにレスポンスを返すことができない状態。 |
401 | Unauthorizedまたはauthorization required/認証が必要 ターゲットリソースに有効な認証資格情報がない状態。 htpasswdを使用して基本的なHTTP認証を設定した時に表示されることがある。 |
402 | Payment Required/支払いが必要 主に必要な資金が不足しているためにリクエストを処理できないことを示す。 (このコードはデジタルキャッシュシステムの一部として使用するために作成されました。) |
403 | Forbidden/拒否 リソースへのアクセスが禁止されている状態。 ログインせずにパスワードで保護されたコンテンツにアクセスしようとするなど、ユーザーが表示する権限のないものにアクセスしようとしたときに返される。 |
404 | Not Found/未検出 要求されたリソースが見つからなかった状態。 |
405 | Method not allowed/未許可のメソッド メソッドが許可されていない状態。 レンタルサーバー(オリジンサーバー)が受信したメソッドをサポートしているものの、ターゲットリソースがサポートしていない場合などに返される。 |
406 | Not acceptable response/受理不可 要求されたリソースが(リクエストで送信されたAcceptヘッダーに照らし合わせ)受け入れられないコンテンツしか生成できない状態。 |
407 | Proxy Authentication Required/プロキシ認証が必要 プロキシサーバーが使用されており、続行する前にブラウザがそれ自身の認証をする必要がある状態。 |
408 | Request Timeout/タイムアウト サーバーが、ブラウザからの残りのリクエストを待機してタイムアウトになった状態。 ブラウザからの完全なリクエストを待っている間にサーバーがタイムアウトすると返されるため、サーバーは、ブラウザから送信された完全なリクエストを取得できなかったことになる。 |
409 | Conflict/競合 関連するリソースと競合しているため、サーバーがブラウザのリクエストを処理できなかった状態。 複数の同時編集が原因で発生する場合がある。 |
410 | Gone/消滅 要求されたリソースがなくなっており、消滅している状態。 404番とは異なり、410番は永続的であり二度と復活しないものであることを意味する。 |
411 | Length Required/長さが必要 要求されたリソースでクライアントが特定の長さを指定する必要があるものの、それが指定されていない状態。 |
412 | Precondition Failed/前提条件が失敗 ブラウザのリクエストヘッダーに特定の条件が含まれており、サーバーがその仕様を満たしていない状態。 |
413 | Payload Too LargeまたはRequest Entity Too Large/ペイロード過大 リクエストの大きさが、サーバーが処理しようとする、または処理できる範囲を超えている状態。 |
414 | URI Too Long/URLが長すぎる サーバーが処理できないほど大きなクエリ文字列としてエンコードされたGETリクエストに対する結果として表示。 |
415 | Unsupported Media Type/サポートされていないメディアタイプ サーバーまたはリソースがリクエストされたメディアタイプをサポートしていない状態。 |
416 | Range Not Satisfiable/レンジが範囲外 リクエストが、サーバーが返すことができないリソースの特定の部分に対するものである状態。 |
417 | Expectation Failed/Expectヘッダーによる拡張が失敗 サーバーが、リクエストのExpectヘッダーフィールドで指定された要件を満たすことができない状態。 |
418 | I’m a teapot/私はティーポット コーヒーを淹れろというリクエストを受け取ったティーポットにより返される。 1988年のエイプリルフールのジョークネタ。 |
422 | Unprocessable Entity/処理できないエンティティ クライアントリクエストにセマンティックエラーが含まれており、サーバーがそれを処理できない状態。 |
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/法的理由により利用不可 サーバーのオペレーターが、リクエストされたリソース(またはリクエストされたリソースを含むリソースのまとまり)へのアクセスを禁止するよう(政府などから)指示を受けている状態。 |
499 | Client closed request/クライアントによるリクエストの終了 まだ処理している間にクライアント側でリクエストが切断た状態。 |
サーバーがブラウザからのリクエストの処理に失敗した状態であることを示す500番台の主なステータスコードは下記になります。
500 | Internal Server Error/サーバー内部エラー サーバーでエラーが発生したため、要求を完了できない状態。 サーバー内部でエラーが発生したことを単に意味する一般的なコードで、サーバーで問題が発生したためリクエストされたリソースが配信されない状況を指す。 |
501 | Not Implemented/実装されていない サーバーがリクエストを満たすために必要な機能をサポートしていない状態。 ほとんどの場合、Webサーバー自体の問題であり、ホスト側によって解決される必要がある。 |
502 | Bad Gateway/不正なゲートウェイ プロキシサーバーの使用中など、あるサーバーが別のサーバーから無効なリクエストを受信したことを意味する。 また、クエリまたはリクエストに時間がかかりすぎることで、サーバーによりキャンセルまたは強制終了され、データベースへの接続が切断されるケースもある。 |
503 | Service Unavailable/サービス利用不可 サーバーが現在、リクエストを処理できない状態。 そのため、リクエストを完了することができない状態。 |
504 | Gateway Timeout/ゲートウェイタイムアウト ゲートウェイとして機能するサーバーが、別のサーバーのレスポンスを待ってタイムアウトした状態。 リクエストの処理に2つのサーバーが関与し、最初のサーバーが2番目のサーバーのレスポンスを待ってタイムアウトしたときに返される。 |
505 | HTTP Version Not Supported/サポートしていないHTTPバージョン サーバー側がクライアントがリクエストの作成に使用したHTTPバージョンをサポートしていない状態。 |
511 | Network Authentication Required/ネットワークに対する認証が必要 使用しようとしているネットワークでリクエストをサーバーに送信する前に、何らかの認証が必要である状態。 公共のWi-Fiの利用規約に同意する必要がある場合など。 |
ステータスコードのカテゴリーだけでもざっくりわかっているといざエラーで表示された時にも焦らずに対応ができますね!
また、エンジニアの間でステータスコードの百人一首が流行っているとかいないとか…笑
ぜひご活用ください!
こちらもおすすめ
株式会社スピカデザイン
渋谷のWEB制作会社「スピカデザイン」の現役コーダー達が、WEB制作のヒントになるような情報をお届けします。
© 2020 spiqa design