0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HTTPについて学習

Posted at

はじめに

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つの要素で構成されています

  1. リクエストライン(Request Line)

    • どのページを取得するか、どのHTTPメソッドを使うかを指定
    • 例:GET / HTTP/1.1
  2. ヘッダ(Headers)

    • 追加情報(ユーザーエージェント、言語、クッキーなど)を送る
    Host: www.google.com
    User-Agent: Mozilla/5.0
    Accept: text/html
    
  3. メッセージボディ(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つの要素で構成されています

  1. ステータスライン(Status Line)
    • リクエストの結果(成功/失敗など)を示す
    • 例:HTTP/1.1 200 OK
  2. ヘッダ(Headers)
    • 追加情報(コンテンツの種類、キャッシュの指示など)を送る
    Content-Type: text/html
    Cache-Control: no-cache
    
  3. メッセージボディ(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ページを開く仕組みを理解することができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?