HTTPとは
-
HTTP:Webサーバとクライアント間での情報のやりとりをする手順
- サーバ:ネットワーク上で情報・サービスを提供する役割を持つコンピュータ
- クライアント:サーバから提供された情報・サービスを利用する役割を持つコンピュータ
例)Webサーバから取得した情報をもとにWebブラウザが画面表示する場合、Webサーバ=サーバ、Webブラウザ=クライアント
Web上でクライアントがサーバにリクエスト(=何らかの処理の要求)を送り、それに対してサーバーがレスポンス(=リクエストへの応答)を返すことで、情報のやりとりが行われる。
WebブラウザとWebサーバ間でのリクエスト・レスポンスの流れ
1. ユーザーの入力(by リンクのクリック or URL直接入力)
URL:どのやり取りの手順で(HTTP, HTTPS, etc.)、どのサーバの、どんなコンテンツを取りに行くかを指定したもの
例)"https://en.wikipedia.org/wiki/Pekingese" というURLは、HTTPSという手順で、en.wikipedia.orgというサーバの、/wiki/Pekingeseというコンテンツを指定
2. ブラウザがHTTPリクエストを生成しサーバに送信
HTTPリクエストの構成要素:
-
リクエスト行
サーバへの要求内容が含まれる(メソッド、パス名、HTTPのバージョンなど)- メソッド(=GET, POSTなど具体的な要求内容を伝える)
- GET:コンテンツの取得、データをサーバに送信(by URLの後ろにデータ付与⇨ブラウザに履歴残り機密性低い&文字列数に制限があり送れるデータ量少ない)
- POST:データをサーバに送信(by リクエストボディ内にデータ付与⇨機密性高い&送れるデータ量多い)
- メソッド(=GET, POSTなど具体的な要求内容を伝える)
-
リクエストヘッダー(メッセージヘッダー)
対応しているデータのタイプ(text/htmlなど)、データの圧縮方法(gzipなど)などが含まれる -
リクエストボディ(メッセージボディ)
サーバに送るデータ内容が含まれる(GETだと空。POSTだとフォーム情報などがココに格納)
3. サーバは処理を行いHTTPレスポンスを生成しブラウザに送信
HTTPレスポンスの構成要素:
-
ステータス行
ステータスコード(=ブラウザから受け取ったHTTPリクエストの処理結果通知コード)が含まれる。詳細はこちら。- 100番台:「リクエスト処理中」
- 200番台:「正常に処理完了」
- 300番台:「ブラウザで追加の処理必要」例)WebサイトのURL変更で転送処理必要
- 400番台:「クライアント側のエラー」例)リクエストされたファイルが存在しない
- 500番台:「サーバ側のエラー」 例)高負荷状態でデータ転送できない
-
レスポンスヘッダー(メッセージヘッダー)
サーバの種類(ATS/8.0.8など)、送信データの形式(text/htmlなど)、文字コード(UTF-8など)が含まれる -
レスポンスボディ(メッセージボディ)
HTMLや画像などのデータが含まれる
4. HTTPレスポンスをもとに、ブラウザはWebページを表示
サーバから送られたHTTPレスポンスのHTMLファイルで、他のファイル(画像など)を参照している場合、ブラウザは今度はそのデータをリクエストしレスポンスを受ける、というのを繰り返し、Webページの表示を完了させる。