HTTP通信の中身
更新日 : 2019年03月15日
HTTPの簡単な仕組みについて、前回の記事で学びました。
今回はHTTP通信の中身をもう少し詳しく見ていきます。主にメッセージヘッダとメッセージボディがメインとなり、クライアントもサーバーも同じ形式でデータを送り合います。
HTTP通信の中身
HTTP通信は、クライアントもサーバーも以下のような形式でデータのやり取りを行います。
HTTPヘッダー
(空行)
HTTPボディ
このようにやり取りされます。
BeCrazyのトップページを例に見てみましょう。
リクエスト
まずはリクエストから見ていきます。HTTPヘッダーは以下のようになっています。
GET / HTTP/1.1
Host: it.becrazy.jp
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: ja,en-US;q=0.9,en;q=0.8
1行目にはHTTPで「どのように」データを取得するかを示すGET
が書かれています。さらに/
がアクセスしたい「何を」を示す部分です。1行目の最後にはHTTPのバージョンが記載されています。今回はバージョン1.1です。
2行目にはHost: it.becrazy.jp
となっていますね。これがアクセスする先のサーバー情報です。
その他たくさんの情報がありますが、主に表示言語やクライアントの使っているブラウザバージョンなどです。ヘッダー情報は様々なものがあるため、改めて記事にします。
GETメソッドでクライアントがリクエストする場合にはHTTPボディはありません。サーバーから情報が届く際には、表示するべき内容がボディに記載してあります。
レスポンス
ではレスポンス(サーバーからの応答)を見てみましょう。まずはヘッダーから。
HTTP/1.1 200 200
Date: Thu, 07 Mar 2019 07:15:47 GMT
Server: Apache
Content-Type: text/html;charset=UTF-8
Content-Language: ja
Accept-Ranges: none
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
1行目には再度バージョン情報が記載され、200
と書いてあります。
これはレスポンスステータスコードと言って、200番台であれば正常な応答ということになります。その他のステータスコードとして、300番台はリダイレクト(他のサーバーにリクエストを変更する)、400番台はユーザー側が間違えている旨を示すエラー、500番台がサーバー側にエラーがある場合に利用されます。
その他ヘッダー情報も様々ありますが、当記事では割愛します。
続いてレスポンスボディですが、ここには表示されるべきHTMLが基本的には入っています。要はユーザーに表示させたいデータ本体です。
まとめ
HTTP通信の中身を簡単に見ていきました。
HTTPヘッダー部分とボディ部分は単純な空白行で区切られていて、ヘッダー部分には通信するために必要な情報、ボディ部分に伝えたいデータ本体を載せてやり取りを行います。
タグ
-
前の記事
HTTPとは
-
次の記事
HTTPのGETメソッド