はじめに
HTTPについて学習したことをまとめました
1.HTTPとは
HyperText Transfer Protocol(HTTP)はWeb上でデータを送受信するための通信ルール(プロトコル)です
WebブラウザとWebサーバーがやり取りをする際に使用されます
例えば、ユーザーがブラウザでhttps://www.google.com にアクセスすると、HTTPを使ってGoogleのサーバーにリクエストを送り、GoogleのサーバーからWebページのデータ(HTML,CSS,画像など)がレスポンスとして返ってきます
2.プロトコルとは
プロトコル(Protocol)とは、「コンピュータ同士が通信するための決まりごと」です
人間同士の会話をする時に共通の言語(日本語、英語など)が必要なのと同じように、コンピュータ同士も正しくデータをやり取りするために「通信ルール」を決めています
HTTPもその一種で、Webページのデータを送受信するためのルールを定めています。他にも、以下のようなプロトコルがあります
- TCP/IP(インターネット通信の基盤となるプロトコル)
- FTP(ファイル転送のためのプロトコル)
- SMTP(メール送信のためのプロトコル)
- HTTPS(HTTPの安全性を高めたもの)
3.HTTPリクエスト
HTTPリクエストとは、クライアント(ブラウザなど)がサーバーにデータを要求するための通信です
例えば、ブラウザでhttps://www.google.com にアクセスすると、Googleのサーバーに「トップページをください」というリクエストが送られます
HTTPリクエストの構成
HTTPリクエストは以下の3つの要素で構成されています
-
リクエストライン(Request Line)
- どのページを取得するか、どのHTTPメソッドを使うかを指定
- 例:GET / HTTP/1.1
-
ヘッダ(Headers)
- 追加情報(ユーザーエージェント、言語、クッキーなど)を送る
例Host: www.google.com User-Agent: Mozilla/5.0 Accept: text/html
-
メッセージボディ(Message Body)
- データを送信する場合に使う(POSTリクエストなど)
- 例:フォームの入力データなど
HTTPメソッドとは?
HTTPメソッドは、リクエストの種類を指定するためのものです
主なメソッドは以下の通りです
メソッド | 説明 |
---|---|
GET | 指定したリソースを取得(Webページを表示) |
POST | 新しいデータをサーバーに送信する(フォーム送信など) |
PUT | 指定したリソースを更新する |
DELETE | 指定したリソースを更新する |
PATCH | 指定したリソースの一部を更新する |
HEAD | レスポンスのヘッダだけを取得する |
OPTIONS | 利用可能なメソッドを取得する |
4.HTTPレスポンス
HTTPレスポンスとは、サーバーがクライアント(ブラウザなど)に返すデータのことです
例えば、https://www.google.com にアクセスすると、GoogleのサーバーからWebページのデータがレスポンスとして返ってきます
HTTPレスポンスの構成
HTTPレスポンスは、以下の3つの要素で構成されています
- ステータスライン(Status Line)
- リクエストの結果(成功/失敗など)を示す
- 例:HTTP/1.1 200 OK
- ヘッダ(Headers)
- 追加情報(コンテンツの種類、キャッシュの指示など)を送る
例Content-Type: text/html Cache-Control: no-cache
- メッセージボディ(Message Body)
- 実際のデータ(HTML,JSON,画像など)
- 例:WebページのHTMLデータ
HTTPステータスコードとは?
HTTPステータスコードは、リクエストの結果を表す3桁の数字です
代表的なものを以下に示します
ステータスコード | 意味 |
---|---|
200 OK | リクエス成功(通常のWebページ表示) |
201 Created | 新しいリソースが作成された(POST成功時) |
204 No Content | 処理成功だが返すデータがない |
301 Moved Permanently | URLが恒久的に変更された |
400 Bad Request | クライアントのリクエストが不正 |
401 Unauthorized | 認証が必要(ログインが必要) |
403 Forbidden | アクセス禁止(権限がない) |
404 Not Found | してしたページが見つからない |
500 Internal Server Error | サーバー内部のエラー |
5.HTTP通信(実際のリクエストとレスポンス)
ブラウザでHttps://www.google.com/ にアクセスした場合、次のようなリクエストとレスポンスがやり取りされます。
GET / HTTP/2
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html
- GETメソッドが使われている(Webページを取得)
- Host: www.google.com でGoogleのサーバーを指定
- User-Agentはブラウザの情報
HTTP/2 200 OK
Content-Type: text/html; charset=UTF-8
Cache-Control: private, max-age=0
Set-Cookie: 1P_JAR=2024-03-19; Secure; SameSite=Strict
- HTTP/2 200 OK → HTMLデータが返される
- Content-Type: text/html → HTMLデータが返される
- Set-Cookie → Googleがクッキーを設定
そして、メッセージボディにはGoogleのトップページのHTMLデータが含まれています。ブラウザはこれを解析し、Webページとして表示します
まとめ
HTTPを学習することによってブラウザとサーバーのやり取りがどのようにして行われているのか、HTTPはWeb上のデータ通信のルールであり、プロトコルはコンピュータ同士の通信ルールなど、ブラウザがWebページを開く仕組みを理解することができました。