東京都府中市、渋谷区のWEB制作会社Maromaroのブログです

2021.04.12

shige

エラーコードについて調べてみた(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 OKOK。リクエストは成功し、レスポンスとともに要求に応じた情報が返される。
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 UsedIM使用。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 LongURIが大きすぎる。URIが長過ぎるのでサーバが処理を拒否した場合に返す。
415 Unsupported Media Typeサポートしていないメディアタイプ。指定されたメディアタイプがサーバでサポートされていない場合に返す。
416 Requested Range Not Satisfiableレンジは範囲外にある。実リソースのサイズを超えるデータを要求した。
417 Expectation FailedExpectヘッダによる拡張が失敗。その拡張はレスポンスできない。
418 I’m a teapot私はティーポット。HTCPCP/1.0の拡張ステータスコード。ティーポットにコーヒーを淹れさせようとして、拒否された場合に返すとされる、ジョークのコードである。
421 Misdirected Request誤ったリクエスト。
422 Unprocessable Entity処理できないエンティティ。WebDAVの拡張ステータスコード。
423 Lockedロックされている。WebDAVの拡張ステータスコード。
424 Failed Dependency依存関係で失敗。WebDAVの拡張ステータスコード。
425 Too EarlyEarly 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 NegotiatesTransparent Content Negotiation in HTTPで定義されている拡張ステータスコード。
507 Insufficient Storage容量不足。WebDAVの拡張ステータスコード。
508 Loop Detectedループを検出。WebDAVの拡張ステータスコード。
510 Not Extended拡張できない。An HTTP Extension Frameworkで定義されている拡張ステータスコード。
511 Network Authentication Requiredネットワークに対する認証が必要。