テクノロジー
2024年9月19日HTTPとは
この記事は、HTTP (Hypertext Transfer Protocol)について説明しています。HTTPは、Webクライアント(ブラウザ)とWebサーバ間でリクエストとレスポンスを交換するための通信プロトコルです。リクエストはブラウザからサーバへの依頼で、レスポンスはサーバからの返答です。URLとHTTPメソッドの組み合わせにより、どのリソースに対して何をするかが指定され、ステータスコードで結果が返されます。
著者プロフィール
Webエンジニア歴5年以上。現在は、プログラミングスクールのメンターとして、次世代のエンジニア育成にも力を注いでいる。フロントエンドとバックエンドの開発に精通し、日々最新技術を追求しながら、実務経験をもとにした実践的な指導を行っている。スキル向上と学び続ける姿勢を大切にし、初心者から中級者まで幅広くサポートすることを得意としている。
ゴール
- HTTPとはどのようなプロトコルなのかを理解する
HTTPとはなにか
あなたは、自分のパソコンやスマートフォンから、見たいサイトのWebページへ接続すると、ブラウザの先頭行にhttp://
または https://
で始まる文字が並んでいるのを見たことがあるはずです。このhttp
は、 HTTP というプロトコル(通信規約)を使用していることを意味しています。Webでは、このHTTPを使って通信を行います。
一方で、あなたは、Webは、インターネットというTCP/IPという共通のプロトコルで接続されたネットワークを利用していることを、すでに学習しました。あなたは、次のような疑問を持つかもしれません。
「インターネットで通信しているWebがTCP/IPというプロトコルを使っているのに、なぜ、HTTPというプロトコルが必要なのだろうか」
その答えは簡単です。HTTPというプロトコルは、Web上で扱うHTML文書などのやり取りを取り決めるための、Web専用のプロトコル(通信規約)です。HTML文書などのWeb専用の荷物を実際に運ぶのは、TCP/IPという共通のプロトコルです。TCP/IPは、郵便システムのようなもので、いろいろな荷物を取り扱うことができると考えてください。通信では、複数の役割を持つプロトコルを連携して、効率的なやりとりを実現しています。
また、Webを利用したコンピュータ間のやり取りがクライアントサーバ型であることも、すでに学習しました。
HTTPは、あなたのパソコンやスマートフォンに実装されているブラウザを、Webのためのクライアント(Webクライアント)として利用します。
HTTPでは、Webクライアントであるブラウザと、Webのためのサーバ(Webサーバ)との間で、以下のようなやり取りを行います。
- Webクライアント(ブラウザ)からWebサーバに対し、依頼(リクエスト)を送信する
- リクエストを受け取ったWebサーバは、Webクライアント(ブラウザ)へ返信(レスポンス)を送信する
この HTTPによる依頼を、HTTPリクエスト といいます。また、HTTPによる返信を、 HTTPレスポンス といいます。Webの処理は、このHTTPリクエスト と HTTPレスポンス の一往復で、一つの処理が完了することを理解しましょう。
Webページの閲覧は、HTTPを利用して、Web上の目的のサーバに依頼(リクエスト)することによって、Webサーバが要求された情報を提供する(返信する)サービスです。
次にHTTPリクエスト、HTTPレスポンスの中身について、もう少し詳しく見ていきましょう。
HTTPリクエストとはなにか
HTTPリクエストは、Web通信のためのサーバ(Webサーバ)へ、情報閲覧や情報登録を依頼するためのリクエスト(依頼)メッセージです。
HTTPリクエストは、リクエストラインとヘッダ部、ボディ部で構成されています。リクエストライン、ヘッダ部は、依頼する封筒の表書きのようなものです。依頼先や依頼の目的が書かれています。ボディ部は、封筒の中身のようなものです。依頼時に提供する具体的な内容が書かれています。特に提供内容がないときは、依頼のみの空封筒になります。
HTTPリクエスト | 内容 |
---|---|
リクエストライン | リクエストの宛先と目的を含む |
ヘッダ部 | リクエストの種類、クッキー情報など |
ボディ部 | サーバへ渡す情報 |
リクエストラインには、HTTPリクエストの対象となるリソース(目的の情報)を処理するための次の二つの重要な値が記載されています。
リクエストラインの要素 | 役割 |
---|---|
URL(Uniform Resource Locator) | リクエスト対象の 宛先(どこ) を特定する値 |
HTTPメソッド | リクエストの 目的(何をしたいか) を指示する値 |
URLとHTTPメソッドの組み合わせにより、 どこに対して、何をしたいのか を伝えることができます。
あなたが、後々作成するWebアプリケーションでは、この二つの値(URLとHTTPメソッド)の組み合わせで、どの処理を実施するかが決定されます。
ヘッダー部のクッキー情報は、ブラウザとサーバの間の関係を同期するための情報です。
HTTPレスポンスとはなにか
HTTPレスポンスは、クライアントからのリクエストに基づいて、Webサーバから返信されるレスポンス(返信)メッセージです。
HTTPレスポンスは、ステータスラインとヘッダ部、ボディ部で構成されています。ステータスライン、ヘッダ部は、返信用封筒の表書きのようなものです。依頼に対する返信概要などが書かれています。ボディ部は、封筒の中身のようなもので、提供する具体的な情報内容が書かれています。
HTTPレスポンス | 内容 |
---|---|
ステータスライン | ステータスコードなどを含む |
ヘッダ部 | レスポンスの種類、クッキー情報など |
ボディ部 | クライアントへ渡す情報 |
ステータスラインには、クライアントからのリクエストが成功したか否かを示すステータスコードなどの値が含まれています。
主なステータスコードには次のようなものがあります。
ステータスコード | 内容 | 意味 |
---|---|---|
200 | OK | リクエスト成功(リクエストが成功し、要求した内容のレスポンスを返信する) |
302 | Found | リクエストによる宛先リソースの変更(リクエストが成功し、別の宛先へ接続変更を実施) |
404 | Not Found | リクエストの宛先なし(リクエストの対象となる該当リソースの宛先が見つからないときに発生する) |
500 | Internal Server Error | リクエスト先のサーバ内部のエラー発生(リクエスト先のサーバ側のアプリケーションのエラーに起因する) |
リクエストとレスポンスの動作の例
例えば、あなたが、好みのサイトの情報を得るために、ブラウザに該当サイトの宛先を指定し、送信ボタンを押すとします。これは、情報閲覧のHTTPリクエストを、希望するサイトのサーバへ送信したことになります。
リクエストが該当のサーバへ到着すると、Webサーバがリクエストを受け取り、URLの最終の宛先とHTTPメソッドを判断して、処理の担当へ引き渡します。もし、ここで、該当の処理担当が見つからないときは、404
のステータスエラーとして、リクエスト先へレスポンスが送信されます。
該当の処理担当が見つかると、要求されたリクエスト内容に基づいて処理が行われます。この処理の途中で問題があると、正しい結果を返すことができません。このとき、500
のステータスエラーとして、リクエスト先へレスポンスが送信されます。
正しく処理が行われると、HTTPレスポンスのボディ部には、ブラウザに表示する画面の内容(HTML文書)が書き込まれ、リクエストを依頼したクライアントのブラウザに向けて、送信されます。このとき、リクエストの成功を意味する200
のステータスコードを付加します。
まとめ
- HTTPは、Webを利用してクライアントとサーバがやり取りするためのプロトコルである。
- HTTPは、クライアントから発した一つのリクエストに対して、サーバから一つのレスポンスを返すことで完了する。
- リクエストに含まれるURLとHTTPメソッドは、目的の対象が「どこ」にあり、「何をしたいか」を伝える重要な役割を持つ。レスポンスのステータスは、リクエストの結果を示す値である。