2021.04.12
エラーコードについて調べてみた(HTTPステータスコード)
こんにちは!
MaromaroのShigeです。
今回は、Webサイトを閲覧しているときに出るエラーコードについて書いてみたいと思います。
まず、インターネットって、どんな仕組みなのか。
色々な切り口がありますが、通信する経路だけ説明します。
◆自分のPCなどでブラウザを開きます。
大抵は、googleなどの検索エンジンが開きますよね。
すでにこの時点で通信は発生しています。(googleなどにアクセスしている)
◆今回は直接URLを入力した場合で説明します。
ブラウザにURLを入力して、Enterを押すと間違っていなければ目的のサイトが開くと思います。
◆この際にどんな経路で目的のサイトがブラウザに表示されたか?
大まかにこのような経路で通信が行われます。
1つのURLをリクエストすると、その対象のファイル(例えばhtmlファイル)に書かれている付属のファイルも上記の経路を伝って取得します。
例えば、1つのhtmlファイルには、「画像ファイル」、「css」ファイル、「javascript」ファイルなどが含まれていることが多いですね。
htmlファイルは、いろいろな設定情報、見出し、小見出し、本文、表示する画像の指定などが書かれています。
画像ファイルは、jpgやpng、gifといった画像や最近はsvgというパスデータで表現される画像もあります。
cssはhtmlで書かれた原稿のレイアウトなどを司るファイルです。
javascriptは、動きを持たせたり特殊な制御を行うなど、様々なことを行うことができるファイルです。
◆前段はこのくらいにして、本題に入ります。
まず、エラーコードの正体を説明します。
前段で説明した、Webサイトを閲覧する経路は色々なコードを一緒に送りあっています。
下の方にリストアップしてみましたので、暇なときに見てください。
◆エラーコード。インターネットで探し物などしているときにたまに出てきますね。
401 Unauthorized
403 Forbidden
404 Not Found
404はサイトによってはデザインされた404が出ることもありますね。
代表的な2つのコードを解説しますね。
◆まずは「401 Unauthorized」
リクエストしたサーバもしくは特定のパスに認証がかかっている場合で、認証できなかった場合に出ます。
Basic認証の場合は、管理者にIDとパスワードを教わってください。
Maromaroの場合、Webサイトを制作している時などにBasic認証をかけることもあります。
◆次に「403 Forbidden」
これは、クライアント(リクエストを投げた先)でアクセス制限
リクエストしたサーバでIP制限が掛かっている場合に出ます。
IP制限は、不正アクセスの多いIPアドレスをブロックしたりできます。
Maromaroの場合、テストサイトの閲覧を会社のIPだけで見られるようにしています。
◆最後に一番多い「404 Not Found」
アクセスしたページが存在しない場合に表示されます。
Webサイトをリニューアルなどして、ファイル名を変えてしまったりなど、古いアドレスにアクセスした場合に出ますね。
これを回避するには・・・
「内容が同じ場合ファイル(ディレクトリ名)を変えない」
「リダイレクトを掛ける」
ユーザーが間違ったディレクトリ名を入力してしまった場合は404が出ます。
「独自の404ページを作る」
独自の404ページを作るメリット
他のページに誘導することで、サイトの回遊率を高めます。
離脱が減ります。
ユーザビリティが向上します。
googleも設置を推奨しています。
具体的には、他のページへのリンクやトップページへのリンクを表示させます。
◆まとめ
3つのエラーコードを紹介しましたが、インターネットの通信にはたくさんのコードが飛び交っています。
404ページの中には独自に工夫されたものもあるようです。グリコの404などはポッキーでデザインされてたりします。。
面白い404ページを探してみるものいいかも。。
◆HTTPステータスコードのリスト
参照元:ウィキペディア「HTTPステータスコード」
◆リクエスト処理を要求
リクエストは受け取られた。処理は継続される。
100 Continue | 継続。クライアントはリクエストを継続できる。 |
101 Switching Protocols | プロトコル切替。サーバはリクエストを理解し、遂行のためにプロトコルの切り替えを要求している。 |
102 Processing | 処理中。WebDAVの拡張ステータスコード。処理が継続されて行われていることを示す。 |
◆リクエスト成功
リクエストは受け取られ、理解され、受理された。
200 OK | OK。リクエストは成功し、レスポンスとともに要求に応じた情報が返される。 |
201 Created | 作成。リクエストは完了し、新たに作成されたリソースのURIが返される。 |
202 Accepted | 受理。リクエストは受理されたが、処理は完了していない。 |
203 Non-Authoritative Information | 信頼できない情報。オリジナルのデータではなく、ローカルやプロキシ等からの情報であることを示す。 |
204 No Content | 内容なし。リクエストを受理したが、返すべきレスポンスエンティティが存在しない場合に返される。 |
205 Reset Content | 内容のリセット。リクエストを受理し、ユーザエージェントの画面をリセットする場合に返される。 |
206 Partial Content | 部分的内容。部分的GETリクエストを受理したときに、返される。 |
207 Multi-Status | 複数のステータス。WebDAVの拡張ステータスコード。 |
208 Already Reported | 既に報告。WebDAVの拡張ステータスコード。 |
226 IM Used | IM使用。Delta encoding in HTTPの拡張ステータスコード。 |
◆リクエスト リダイレクション。
リクエストを完了させるためには追加で処理が必要。
300 Multiple Choices | 複数の選択。リクエストしたリソースが複数存在し、ユーザやユーザーエージェントに選択肢を提示するときに返される。 |
301 Moved Permanently | 恒久的に移動した。リクエストしたリソースが恒久的に移動されているときに返される。 |
302 Found | 発見した。リクエストしたリソースが一時的に移動されているときに返される。 |
303 See Other | 他を参照せよ。リクエストに対するレスポンスが他のURLに存在するときに返される。 |
304 Not Modified | 未更新。リクエストしたリソースは更新されていないことを示す。 |
305 Use Proxy | プロキシを使用せよ。レスポンスのLocation:ヘッダに示されるプロキシを使用してリクエストを行わなければならないことを示す。 |
306 (Unused) | 将来のために予約されている。ステータスコードは前のバージョンの仕様書では使われていたが、もはや使われておらず、将来のために予約されているとされる。 |
307 Temporary Redirect | 一時的リダイレクト。リクエストしたリソースは一時的に移動されているときに返される。 |
308 Permanent Redirect | 恒久的リダイレクト。 リクエストしたリソースは恒久的に移動されているときに返される。 |
◆クライアントエラー
クライアントからのリクエストに誤りがあった。
400 Bad Request | リクエストが不正である。定義されていないメソッドを使うなど、クライアントのリクエストがおかしい場合に返される。 |
401 Unauthorized | 認証が必要である。Basic認証やDigest認証などを行うときに使用される。 |
402 Payment Required | 支払いが必要である。現在は実装されておらず、将来のために予約されているとされる。 |
403 Forbidden | 禁止されている。リソースにアクセスすることを拒否された。リクエストはしたが処理できないという意味。 |
404 Not Found | 未検出。リソース・ページが見つからなかった。 |
405 Method Not Allowed | 許可されていないメソッド。許可されていないメソッドを使用しようとした。 |
406 Not Acceptable | 受理できない。Accept関連のヘッダに受理できない内容が含まれている場合に返される。 |
407 Proxy Authentication Required | プロキシ認証が必要である。プロキシの認証が必要な場合に返される。 |
408 Request Timeout | リクエストタイムアウト。リクエストが時間以内に完了していない場合に返される。 |
409 Conflict | 競合。要求は現在のリソースと競合するので完了出来ない。 |
410 Gone | 消滅した。リソースは恒久的に移動・消滅した。どこに行ったかもわからない。 |
411 Length Required | 長さが必要。Content-Length ヘッダがないのでサーバがアクセスを拒否した場合に返される。 |
412 Precondition Failed | 前提条件で失敗した。前提条件が偽だった場合に返される。 |
413 Request Entity Too Large | ペイロードが大きすぎる。リクエストエンティティがサーバの許容範囲を超えている場合に返す。 |
414 Request-URI Too Long | URIが大きすぎる。URIが長過ぎるのでサーバが処理を拒否した場合に返す。 |
415 Unsupported Media Type | サポートしていないメディアタイプ。指定されたメディアタイプがサーバでサポートされていない場合に返す。 |
416 Requested Range Not Satisfiable | レンジは範囲外にある。実リソースのサイズを超えるデータを要求した。 |
417 Expectation Failed | Expectヘッダによる拡張が失敗。その拡張はレスポンスできない。 |
418 I’m a teapot | 私はティーポット。HTCPCP/1.0の拡張ステータスコード。ティーポットにコーヒーを淹れさせようとして、拒否された場合に返すとされる、ジョークのコードである。 |
421 Misdirected Request | 誤ったリクエスト。 |
422 Unprocessable Entity | 処理できないエンティティ。WebDAVの拡張ステータスコード。 |
423 Locked | ロックされている。WebDAVの拡張ステータスコード。 |
424 Failed Dependency | 依存関係で失敗。WebDAVの拡張ステータスコード。 |
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 | 法的理由により利用不可。403 Forbiddenから派生したステータスコード。 |
◆サーバエラー
サーバがリクエストの処理に失敗した。
500 Internal Server Error | サーバ内部エラー。サーバ内部にエラーが発生した場合に返される。 |
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 | 容量不足。WebDAVの拡張ステータスコード。 |
508 Loop Detected | ループを検出。WebDAVの拡張ステータスコード。 |
510 Not Extended | 拡張できない。An HTTP Extension Frameworkで定義されている拡張ステータスコード。 |
511 Network Authentication Required | ネットワークに対する認証が必要。 |