目次
バージョンHTTP/1.1についてです。
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がデフォルトになっていて接続は維持されます。 - クライアントは、取得した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タイプです。
関連の記事