「HTTPリクエスト」と「HTTPレスポンス」

HTTPリクエストとHTTPレスポンスについてです。
バージョンは、HTTP/1.1です。

目次

サンプル HTTP通信の流れ
  HTTPリクエスト
HTTPレスポンス
HTTPレスポンスのステータス番号

HTTP通信の流れ

クライアントとWebサーバーは「HTTPリクエスト」と「HTTPレスポンス」でやり取りします。

  1. クライアント側のPCでブラウザにURLを入力します。
  2. クライアント側のPCからWebサーバーに「HTTPリクエスト」を送信します。
  3. Webサーバーが、「HTTPリクエスト」に対応する「HTTPレスポンス」をクライアント側のPCに送信します。
  4. クライアント側のPCでWebページを表示します。

 

クライアントとWebサーバー

  • クライアントとは、サービスを受ける側のことです。
  • サーバーとは、サービスを提供する側のことです。
  • 1回やりとりする毎に接続は切れます。これをステートレス型と呼びます。
    HTTP/1.1では、Connection: Keep-aliveがデフォルトになっていて接続は維持されます。
    Wikipediaのキープアライブ
  • クライアントは、取得したhtmlファイルをみてCSSや画像ファイルが必要な場合は、再度サーバーにリクエストを送ります。
  • クライアントは、取得したhtmlファイルやCSSや画像等を組み立ててページを表示します。

 

HTTPリクエスト

HTTPリクエストのGETメソッドとPOSTメソッドについてです。

 

HTTPリクエストのGetメソッド

以下は、HTTPリクエストのGETメソッドです。

  1. リクエスト行。常に1行です。
  2. ヘッダー。リクエストの詳細情報です。
  3. メソッドです。GETになっています。
  4. リクエストの対象です。?の後のtext1=a&text2=bは、画面での入力内容です。
    以下は画面のイメージです。左のテキストボックスの名前がtext1でaと入力し、右のテキストボックスの名前がtext2でbと入力しました。

    クエリ文字列、クエリストリング、URLパラメータと呼ばれます。
    →URLの末尾に?が付きます。
    →「名前=値」の形式です。
    →値が複数ある場合は「&」でつなげます。
  5. HTTPのバージョンです。
  6. User-Agent・・ブラウザのバージョン情報等。
  7. Accept・・・ブラウザが想定する(利用可能な)MIMEのタイプ。
  8. Referer・・・リファラ。遷移元のページ。
  9. Accept-Encoding・・・ブラウザがデコードできるエンコーディング形式。
  10. Accept-Language・・・ブラウザが想定する(利用可能な)言語。

Getメソッドの特徴

  • クエリ文字列はブラウザのURL欄に表示されます。
  • クエリ文字列は大量のデータを送るのには向いていません。

 

HTTPリクエストのPostメソッド

以下は、HTTPリクエストのPOSTメソッドです。

  1. リクエスト行。常に1行です。
  2. ヘッダー。リクエストの詳細情報があります。
  3. 空白行。ヘッダーとボディを分けています。
  4. ボディ。画面での入力内容が入っています。
    以下は画面のイメージです。左のテキストボックスの名前がtext1でaと入力し、右のテキストボックスの名前がtext2でbと入力しました。
    →「名前=値」の形式です。
    →値が複数ある場合は「&」でつなげます。
  5. メソッドです。POSTになっています。
  6. リクエストの対象です。
  7. HTTPのバージョンです。

Postメソッドの特徴

  • POSTは大きめのデータを送信できます。
  • 入力内容はボディにありGETのようにブラウザのURLには表示されません。
  • ただしボディは解析すれば確認できるのでセキュリティ的に安全というわけではありません。

 

HTTPレスポンス

以下は、上記HTTPリクエストのgetとpostに対するHTTPレスポンス(応答)です。

  1. ステータス行。常に1行です。
  2. ヘッダー。レスポンスの詳細情報があります。
  3. 空白行。ヘッダーとボディを分けています。
  4. ボディ。HTMLや画像等が入っています。
  5. HTTPのバージョンです。
  6. ステータスコードです。200はWebサーバーの処理が成功したことを表します。
  7. Server・・・Webサーバーの名前とバージョン等です。
  8. Content-Type・・・出力するMIMEタイプです。

 

HTTPレスポンスのステータス番号

主なHTTPレスポンスのステータス番号の一覧です。
100番台は、情報です。
200番台は、正常処理(成功)を意味します。
300番台は、リダイレクト関連です。
400番台は、クライアン側のエラーです。
500番台は、サーバー側のエラーです。

ステータスコード 説明
200 OK
リクエストが成功しレスポンスが返されます。正常処理を表します。
301 Moved Parmanently
指定したリソースは移動したので、新しい場所から取得して下さい。
サイトの引越しをしたときは、この値を設定します。
302 Moved Temporarily
指定したリソースは一時的に移動したので、新しい場所から取得して下さい。
一時的にサイトの場所を変える時にこの値を設定します。
304 Not Modified
指定したファイルは変更されていないのでブラウザのキャッシュのデータを表示してください。
401 Unauthorixed
認証に失敗しました。
403 Forbidden
アクセス権がありません。
404 Not Found
リクエストしたアドレスのページがありません。
500 Internal Server Error
スクリプトなどで内部のエラーが発生しています。
502 Bad Gateway
ゲートウェイが無効なレスポンスを受け取りました。
503 Service Unavailable
サービスが提供できません。
Webサーバーに負荷がかかりすぎたときなどに表示されます。
504 Gateway Timeout
上流からのレスポンスが時間内に得られないときに表示されます。

以下は、MDNのHTTP レスポンスステータスコードのリンクです。
https://developer.mozilla.org/ja/docs/Web/HTTP/Status

以下は、MDNのHTTPメッセージのリンクです。
https://developer.mozilla.org/ja/docs/Web/HTTP/Messages

以下は、MDNのHTTPの概要のリンクです。
https://developer.mozilla.org/ja/docs/Web/HTTP/Overview

関連の記事

PHP フォームの値を別画面に渡す(GET/POST)
Webサーバに接続するまでの流れとポート番号
ネットワーク NATとNAPTでIPアドレスを変換する
DNSの仕組みの概要(ドメイン・ネーム・システム)
L2スイッチとL3スイッチとルーターの違い
ARPプロトコル(MACアドレスを取得する)
VPNの概要(インターネットVPNとIP-VPNの違い)
プロキシサーバとリバースプロキシサーバの違い

△上に戻る