こんにちはフロントエンドエンジニアのまさにょんです!
今回は、Web開発のエンジニアなら知っておきたい、HTTP通信やHTTPステータスコードについて解説していきます。
目次
HTTP通信とは?
HTTP(Hypertext Transfer Protocol)とは「Webクライアント」と「Webサーバー」がWeb上で情報をやり取りするためのプロトコル(通信ルール)です。
そして、そのHTTPプロトコルを使った通信を「HTTP通信」と言います。
つまり、HTTP通信は「Webクライアント」と「Webサーバー」がWeb上で情報をやり取り(通信)することです。
HTTP通信では、1つの要求(リクエスト)には1つの応答(レスポンス)を返すルールになっています。
元々は「Hypertext」(HTML)をやり取りするためのProtocol(通信ルール)でしたが、
そのシンプルさから、今では「REST-API」などのAPI実装時の通信プロトコルとしても採用されています。
次の説明が、とてもわかりやすいので引用します。
HTTP(Hypertext Transfer Protocol)とは、
WebサーバとWebブラウザの間で、Web情報をやりとりするためのプロトコル(通信規則)です。
私たちが普段、ホームページで情報収集したり、ブログを読んだりする時、
このHTTPを使ってサーバとクライアント(ユーザ)間でやり取りが行われます。
HTTPの特徴の1つは動作がとてもシンプルな点です。
情報のやり取りは常に、クライアント(Webブラウザなど)が要求を出し、サーバが応答を返します。
1つの要求(リクエスト)には1つの応答(レスポンス)を返すルールになっていて、
どちらかが多くなることはありません。
また、以前に何を要求したかで応答が変わることなく、
同じ条件ならば、ある要求に対する応答は常に同じものになります。
HTTPは完結で素直な特性を持つことから、WebサーバとWebブラウザ間のやり取り以外に、
スマホやアプリからのサーバ機能呼び出しや、サーバ間のサービス呼び出しなどに幅広く使われており、
主に「REST API」に関係する事項で、
アプリケーション開発時にプログラムが持つ機能を呼び出す場合に利用されます。
引用元: HTTPとは?HTTPSとの違いをサイト移行で実施するリダイレクト設定などをもとに解説
HTTP通信のHTTPリクエストとHTTPレスポンスをざっくりと理解する
HTTP通信の処理フローをざっくりと理解するのが大事です。
HTTP通信は「Webクライアント」と「Webサーバー」がWeb上で情報をやり取り(通信)することです。
HTTP通信のやり取り(通信)は、1つのリクエストとそれに対する1つのレスポンスと言うシンプルなやり取りです。
①「Webクライアント」から「Webサーバー」に送信されるデータを「HTTPリクエスト」と言います。
②「Webサーバー」から「Webクライアント」に送信されるデータを「HTTPレスポンス」と言います。
次の図がわかりやすいです。
もう少し細かく分けると、次のようにHTTP通信のフローは、4つに分割できます。
- Client側がHTTPリクエストを送信する。
- Server側がHTTPリクエストを受信&処理をする。
- Server側がHTTPレスポンスを送信する。
- Client側がHTTPレスポンスを受信&処理をする。
超高速で軽量な素晴らしいホームページである『阿部 寛のホームページ』を事例に具体化してみましょう。
- ブラウザのアドレスバーに『阿部 寛のホームページ』のアドレス(http://abehiroshi.la.coocan.jp/)を入力する。
- Web-Server(Apacheなど)が「http://abehiroshi.la.coocan.jp/」のRequestを受信してHTMLを発見する。
- Web-Serverは、ブラウザにResponse情報としてHTMLを送信する。
- ブラウザは、HTML情報を受信して、それを画面に表示する。
HTTPステータスコードとは?
HTTPステータスコードとは、HTTPリクエストに対するサーバー処理の結果を表す3桁の番号です。
HTTPステータスコードの分類と概要を理解する
HTTPステータスコードには、次の5つの分類があります。
HTTPステータスコード番号 | コードの概要 |
100番台 | 情報レスポンス(処理中) |
200番台 | 成功レスポンス |
300番台 | リダイレクション |
400番台 | クライアントエラー |
500番台 | サーバーエラー |
上記のように、200番台なら成功や、400番台ならクライアント側でエラー、500番台ならサーバー側でエラーなど
何番台のステータスコードかでHTTP通信の状態がわかるようになっています。
それでは、Web制作やWeb開発でよく見かけるステータスコードをいくつか紹介していきます。
HTTP 200番台 成功レスポンス
HTTPステータスコード200番台は、クライアントからのリクエストが正常に受付されたことを示すステータスコードです。
ステータスコード | 状態 | 概要 |
200 OK | 正常 | リクエストが成功したこと |
201 Created | 正常 | リクエストが成功し、新たなリソースが作成されたこと |
202 Accepted | 正常 | リクエストは受理されたが、処理が完了していないこと |
HTTP 300番台 リダイレクションメッセージ
HTTPステータスコード300番台は、「リダイレクト」が発生した際に表示されるステータスコードです。
ステータスコード | 状態 | 概要 |
300 Multiple Choice | 正常 | リクエストに対してレスポンスが複数あること |
301 Moved Permanently | 正常 | リクエストされたリソースのURLが恒久的に変更されたこと |
302 Found | 正常 | リクエストされたリソースのURLが一時的に変更されたたこと |
HTTP 400番台 クライアントエラーレスポンス
HTTPステータスコード400番台は、「クライアントエラー」が出たときに表示されるステータスコードです。
ステータスコード | 状態 | 概要 |
400 Bad Request | エラー | リクエストが不正であること |
401 Unauthorized | エラー | ログインが必要なページなどでアクセス権が無いこと |
403 Forbidden | エラー | 特定IPのみからアクセスできるページなどでアクセス権が無いこと |
404 Not Found | エラー | リクエストされたリソースがないこと |
405 Method Not Allowed | エラー | 許可されていないHTTPメソッドであること |
413 Payload Too Large | エラー | リクエストのサイズが上限を超えていること |
HTTP 500番台 サーバーエラーレスポンス
HTTPステータスコード500番台は、「サーバーエラー」が出たときに表示されるステータスコードです。
ステータスコード | 状態 | 概要 |
500 Internal Server Error | エラー | サーバーで何らかのエラーが起きたこと |
502 Bad Gateway | エラー | ゲートウェイまたはプロキシで何らかのエラーが起きたこと |
Twitterやってます!Follow Me!
神聖グンマー帝国の逆襲🔥
神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!
関連記事
参考・引用
- 【HTML入門】HTMLとは?ハイパーテキストとハイパーリンクの意味とマークアップとマークダウンの違いを解説
- HTTPとは?HTTPSとの違いをサイト移行で実施するリダイレクト設定などをもとに解説
- 『阿部 寛のホームページ』
- 【よく見るものを解説】HTTPステータスコードとは?コード番号別に詳しく解説
- よく使うHTTPステータスコードまとめ