HTTPリクエストとHTTPレスポンスについてです。
バージョンは、HTTP/1.1です。
目次
サンプル | HTTP通信の流れ |
HTTPリクエスト | |
HTTPレスポンス | |
HTTPレスポンスのステータス番号 |
HTTP通信の流れ
クライアントとWebサーバーは「HTTPリクエスト」と「HTTPレスポンス」でやり取りします。
- クライアント側のPCでブラウザにURLを入力します。
- クライアント側のPCからWebサーバーに「HTTPリクエスト」を送信します。
- Webサーバーが、「HTTPリクエスト」に対応する「HTTPレスポンス」をクライアント側のPCに送信します。
- クライアント側のPCでWebページを表示します。
クライアントとWebサーバー
- クライアントとは、サービスを受ける側のことです。
- サーバーとは、サービスを提供する側のことです。
- 1回やりとりする毎に接続は切れます。これをステートレス型と呼びます。
HTTP/1.1では、Connection: Keep-aliveがデフォルトになっていて接続は維持されます。
Wikipediaのキープアライブ - クライアントは、取得したhtmlファイルをみてCSSや画像ファイルが必要な場合は、再度サーバーにリクエストを送ります。
- クライアントは、取得したhtmlファイルやCSSや画像等を組み立ててページを表示します。
HTTPリクエスト
HTTPリクエストのGETメソッドとPOSTメソッドについてです。
HTTPリクエストのGetメソッド
以下は、HTTPリクエストのGETメソッドです。
- リクエスト行。常に1行です。
- ヘッダー。リクエストの詳細情報です。
- メソッドです。GETになっています。
- リクエストの対象です。?の後のtext1=a&text2=bは、画面での入力内容です。
以下は画面のイメージです。左のテキストボックスの名前がtext1でaと入力し、右のテキストボックスの名前がtext2でbと入力しました。
クエリ文字列、クエリストリング、URLパラメータと呼ばれます。
→URLの末尾に?が付きます。
→「名前=値」の形式です。
→値が複数ある場合は「&」でつなげます。 - HTTPのバージョンです。
- User-Agent・・ブラウザのバージョン情報等。
- Accept・・・ブラウザが想定する(利用可能な)MIMEのタイプ。
- Referer・・・リファラ。遷移元のページ。
- Accept-Encoding・・・ブラウザがデコードできるエンコーディング形式。
- Accept-Language・・・ブラウザが想定する(利用可能な)言語。
Getメソッドの特徴
- クエリ文字列はブラウザのURL欄に表示されます。
- クエリ文字列は大量のデータを送るのには向いていません。
HTTPリクエストのPostメソッド
以下は、HTTPリクエストのPOSTメソッドです。
- リクエスト行。常に1行です。
- ヘッダー。リクエストの詳細情報があります。
- 空白行。ヘッダーとボディを分けています。
- ボディ。画面での入力内容が入っています。
以下は画面のイメージです。左のテキストボックスの名前がtext1でaと入力し、右のテキストボックスの名前がtext2でbと入力しました。
→「名前=値」の形式です。
→値が複数ある場合は「&」でつなげます。 - メソッドです。POSTになっています。
- リクエストの対象です。
- HTTPのバージョンです。
Postメソッドの特徴
- POSTは大きめのデータを送信できます。
- 入力内容はボディにありGETのようにブラウザのURLには表示されません。
- ただしボディは解析すれば確認できるのでセキュリティ的に安全というわけではありません。
HTTPレスポンス
以下は、上記HTTPリクエストのgetとpostに対するHTTPレスポンス(応答)です。
- ステータス行。常に1行です。
- ヘッダー。レスポンスの詳細情報があります。
- 空白行。ヘッダーとボディを分けています。
- ボディ。HTMLや画像等が入っています。
- HTTPのバージョンです。
- ステータスコードです。200はWebサーバーの処理が成功したことを表します。
- Server・・・Webサーバーの名前とバージョン等です。
- 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の違い)
プロキシサーバとリバースプロキシサーバの違い