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

「HTTPリクエスト」と「HTTPレスポンス」についてです。

目次

HTTP通信の流れ

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

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

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

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

  • クライアントとはサービスを受ける側のことです。
  • サーバーとはサービスを提供する側のことです。
  • 1回やりとりする毎に通信が終了します。これをステートレス型と呼びます。
  • クライアントは取得したhtmlファイルを見て、CSSや画像ファイルが必要な場合は、またサーバーにリクエストを送ります。
  • クライアントは取得したhtmlファイルやCSSや画像等を組み立ててページを表示します。

 

HTTPリクエスト

HTTPリクエストには、GETメソッドとPOSTメソッドの2種類があります。

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レスポンスです。

  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サーバーに負荷がかかりすぎたときなどに表示されます。

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

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

関連の記事

PHP フォームの値をsubmitするサンプル
メールを送受信するプロトコル (SMTP/POP/IMAP)

△上に戻る