HTTPとは何か

HTTP(Hypertext Transfer Protocol)は、Web上でクライアントとサーバーが要求と応答を交換するための規則です。ブラウザでページを開くときも、アプリがWeb APIを呼ぶときも、多くの場合HTTPが使われます。

HTTPはデータそのものではなく、データをどのようなメッセージでやり取りするかを決めます。

一文でいうと

HTTPとは、Web上の資源について、クライアントが要求しサーバーが応答する方法を定めたプロトコルです。

MDNはHTTPを、HTMLなどの資源を取得するための、Webのデータ交換の基盤となるクライアント・サーバー型のプロトコルと説明しています。IETFのRFC 9110は、HTTPを状態を持たないアプリケーション層のプロトコルと定義しています。

個人開発のどこで登場するか

ページ、画像、CSS、JavaScriptの取得、フォーム送信、APIとは何かでのデータ交換に登場します。普段はブラウザやライブラリがメッセージを組み立てますが、通信失敗を調べるには部品を知る必要があります。

ブラウザの開発者ツールでは、次を確認できます。

  • 要求先のURL

  • GETやPOSTなどのメソッド

  • 追加情報を持つヘッダー

  • 送受信するボディ

  • 結果を表すステータスコード

  • 通信にかかった時間

「APIが動かない」ときも、要求が送られていない、サーバーが拒否した、応答を画面側で読めない、という段階に分けられます。

ページを取得する要求と応答

ブラウザがページを開く例では、概念上、次のような交換を行います。

  1. ブラウザが GET メソッドで対象のパスを要求する

  2. サーバーが要求のヘッダーなどを読み、処理する

  3. サーバーが 200、404、500などのステータスを返す

  4. 必要に応じてHTMLなどを応答ボディへ入れる

  5. ブラウザが応答を解釈して表示する

200番台は成功、400番台は要求側の問題、500番台はサーバー側の失敗を表す分類です。ただし、200が返っただけでは、期待したデータや画面であることまでは保証されません。

APIやHTTPSと区別する

  • HTTP:要求と応答を交換する通信上の規則

  • API:ソフトウェアが利用できる機能とやり取りの約束

  • HTTPS:HTTP通信をTLSで保護する方法

  • URL:要求する資源の場所とアクセス方法を示す文字列

Web APIはHTTPを使うことが多いものの、APIという概念はHTTPだけに限りません。また、HTTPとHTTPSは要求・応答の意味を共有しますが、通信経路の保護が異なります。

HTTPは前の要求を自動では覚えない

HTTPは基本的に、各要求を独立したものとして扱います。ログイン状態や買い物かごを続けるアプリでは、Cookieやセッションなどを組み合わせ、複数の要求を同じ利用者の流れとして結び付けます。

HTTPのまま秘密情報や個人情報を送ると、通信経路で読まれたり書き換えられたりする危険があります。公開サイトではHTTPSとは何かを使い、URL、ヘッダー、ログにも秘密値を不要に残さないようにします。

次に読む記事

通信を保護する仕組みはHTTPSとは何か、資源の場所はURLとは何かで整理します。要求を送る側と受ける側はブラウザとは何かとサーバーとは何かへ進みます。

参考資料