背景
HTTPのリクエストとレスポンスの構成が少し複雑なので整理する
HTTPリクエスト
ちなみにHTTPリクエストというのはクライアント(webブラウザ)から送られる通信のものです。
例:
POST / HTTP/1.1 [リクエストライン]
Host: www.google.co.jp [ヘッダー]
Connection: keep-alive [ヘッダー]
User-Agent: Mozilla/5.0(Windows NT 6.1;WOW64) [ヘッダー]
Accept-Encoding: gzip,deflate [ヘッダー]
Keyword=AWS [ボディ]
HTTPリクエストはは↑のように構成されていて、リクエストラインはHTTPメソッドの種類、そしてHTTPプロトコルの種類を表示しています。
Hostというのはリクエスト先のサーバー名のことです。
Connectionというのは通信状況を示しています。
User-Agentといのはブラウザの種類を示しています。
Accept-Encodingというのは情報を圧縮するときの方式をサーバに伝えるために表示されています。
(WebサイトはHTMLやCSSなどのいろんな言語で構成されていますが、普通に表示させようとするとデータ量がかさんでしまうので、それを減らすために圧縮してから情報をサーバに送ります。このときに複数ある圧縮の方式からクライアントサイドはこの圧縮方式を使っていますよ!というのをサーバに伝えてくれています。)
HTTPレスポンス
HTTPレスポンスというのはクライアントからのリクエストを受け取ったサーバがそれに返信する形でクライアントに送る情報のことです。
例:
HTTP/1.1 200 OK [ステータスライン]
Date: Wed 09 Apr 2021 06:38:47 GMT [ヘッダー]
Cache-Control: private, max-age=0; [ヘッダー]
Content-Type: text/html; charset=UTF-8 [ヘッダー]
Server: gws [ヘッダー]
<html><body> .. [ボディ]
HTTPレスポンスは↑のように構成されています。
ステータスラインとはリクエストに対しての結果を伝えています。200 OKとなっている場合は接続が正常だという意味で、これが4XXみたいに百の位が4とかなっているとクライアントエラー(クライアント側のリクエストに何らかのエラーがある)ということを示しています。
そして、その左のHTTP/1.1というのはHTTPプロトコルのversionを示していて、現在では通常HTTP/1.1が使われています。ちなみにHTTP/1.0はtティム・バーナーズリーというインターネット会の始祖的な人が作りました。
Dateは日付を表しています。
Cache-Controlとは読み込んだページをキャッシュとして保存して良いかの確認を表している文です。(キャッシュというのは同じページを開いた時にいちいち最初から読み込んでいるとデータがかさむので、読み込んだページをキャッシュとして保存し、データを節約することができるものです。)
Content-Typeとはページに表示しているデータそのものを表しています。text/htmlであればHTMLとしてユーザーに表示、画像ならimage/pngみたいな感じになります。
serverとはWebサーバの名前です。ここではgoggle serverを意味しています。