HTTPの基本

HTTPのリクエストヘッダー

一行目をリクエストラインと呼び、二行目以降をリクエストヘッダと呼ぶ。

GET / HTTP/1.1
Accept: image/gif, image/jpeg, */*
Accept-Language: ja
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1;)
Host: www.xxx.zzz
Connection: Keep-Alive
それぞれのヘッダの意味

GET / HTTP/1.1

  • GET通信でHTTP1.1を使う

Accept: image/gif, image/jpeg, /

Accept-Language: ja

  • ブラウザが解釈する言語をサーバーに伝える。

Accept-Encoding: gzip, deflate 圧縮されたデータをブラウザが解釈できる方法を示す。クライアントとサーバーが共通の圧縮アルゴリズムをサポートしている必要がある。サーバーが圧縮したコンテンツを送っても、ブラウザが解凍できないと意味がない。

f:id:adeniiro:20180519105814p:plain

HTTPリクエストヘッダ Accept-Encoding とは? | WEB ARCH LABO

User-Agent: Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1;)

  • ブラウザ自身の情報

Host: www.xxx.zzz

  • サーバー名を送信する。

Connection: Keep-Alive

  • Keep-Aliveで接続をし続けるメッセージになる。次回のコネクションのコストを減らせる。接続を辞める時は、closeを送信する。

Connection - HTTP | MDN

HTTPレスポンス

HTTP/1.1 200 OK
Date: Sun, 11 Jan 2004 16:06:23 GMT
Server: Apache/1.3.22 (Unix) (Red-Hat/Linux)
Last-Modified: Sun, 07 Dec 2003 12:34:18 GMT
ETag: "1dba6-131b-3fd31e4a"
Accept-Ranges: bytes
Content-Length: 4891
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html

<!DOCTYPE html>
<html>
  :
</html>
それぞれのヘッダー

HTTP/1.1 200 OK

Date: Sun, 11 Jan 2004 16:06:23 GMT

  • レスポンスを返した時の日時の情報

Server: Apache/1.3.22 (Unix) (Red-Hat/Linux)

  • レスポンスを返したサーバーの名前

Last-Modified: Sun, 07 Dec 2003 12:34:18 GMT

  • 最後にリソースに対する変更があった日時。リソースとはHTMLや画像の事。

Last-Modified - HTTP | MDN

ETag: "1dba6-131b-3fd31e4a"

  • リソースが更新されたら変化する値

Accept-Ranges: bytes

  • よくわからなかった。 キーワード: 部分的GET、ステータスコード206、パーシャル。リクエストでrangeを要求してないのになんでここで出てくるのかわからなかった。

Content-Length: 4891

  • ボディの大きさを単位バイトで示す。

Keep-Alive: timeout=15, max=100

  • timeout: 1回あたりのコネクション確立時間。 max: timeoutする前にこの接続でリクエストできる最大数

HTTPのkeepaliveの仕様を勘違い | thiroyoshi.blog

developer.mozilla.org

Connection: Keep-Alive Content-Type: text/html