HEADメソッド【HTTPリクエストメソッド】
Webサーバに対するお願いの種類だよ
ヘッダ情報を見せてと言ってるよ
簡単に書くよ
HEADメソッド【HTTPリクエストメソッド】(読:ヘッドメソッド 英:HEAD method)とは
ホームページを見るときに使うソフト(Webブラウザ)からホームページのファイルが置いてあるコンピュータ(Webサーバ)に対して出される お願いの種類のひとつ
であり
「ページの中身は、いらないよ。そのページの付帯情報(ヘッダ情報)だけ、ちょうだい」な、お願い
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として、ホームページが表示される流れと「HTTPリクエストメソッド」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
あなたがホームページを見ようとすると、まず、ホームページを見るときに使うソフト(Webブラウザ)からホームページのファイルが置いてあるコンピュータ(Webサーバ)に対して「このページをおくれ」と お願いが出されます。
そのお願いに対して、WebサーバさんからWebブラウザさんに「ほれ、そのページだよ」と お返事がきます。
お返事を受け取ったWebブラウザさんは、受け取った内容(ホームページのファイル)を画面上に表示してくれます。
これが、ホームページが表示されるときの流れです。
さて、この流れにおいて、WebブラウザさんからWebサーバさんに対して「このページをおくれ」な お願いが出されました。
話を単純化するために「このページをおくれ」な お願いとしましたが、実は お願いの種類は1つでは ありません。
いろいろ、あります。
「このページをおくれ」以外にも「このデータをくれてやるよ」や「このデータを消しちゃってよ」など、いろいろあるのです。
このWebブラウザさんからWebサーバさんに対する「お願いの種類」を専門用語で「HTTPリクエストメソッド」と言います。
以上を踏まえて
HTTPリクエストメソッドのひとつで「ヘッダ情報だけくれ」な、お願い
が「HEADメソッド」です。
HEADメソッドの特徴は
1.基本的にはGETメソッドと同じ
2.ページの中身は取得しない
です。
先ほどのホームページが表示される流れの説明を思い出してください。
Webブラウザさんからのお願いに対して、Webサーバさんは「ほれ、そのページだよ」と お返事をしました。
このお返事は「HTTPレスポンス」と言います。
HTTPレスポンスは3つの部品から成り立っています。
1.HTTPステータスライン(ステータスライン)
2.HTTPレスポンスヘッダ(ヘッダ)
3.HTTPレスポンスボディ(レスポンスボディ)
の3つです。
構造としては
「ステータスライン」
「ヘッダ」
(空行【CR+LF】)
「レスポンスボディ」
のようになっています。
実際のHTTPレスポンスは、例えば以下のような内容です。
HTTP/1.1 200 OK\r\n
Server: nginx\r\n
Date: Tue, 11 Jul 2017 09:23:07 GMT\r\n
Content-Type: text/html\r\n
Transfer-Encoding: chunked\r\n
Connection: keep-alive\r\n
\r\n
<!DOCTYPE html>\r\n
<html lang="ja">\r\n
<head>\r\n
\t<meta http-equiv="content-type" content="text/html; charset=UTF-8" />\r\n
\t<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\r\n
\r\n
\r\n
\t<meta name="keywords" content="\350\276\236\345\205\270,IT,\347\224\250\350\252\236,\345\210\235\345\277\203\350\200\205">\r\n
\t<meta name="author" content="Makoto Sasaki">\r\n
\t<meta name="copyright" content="Copyright PCS">\r\n
\r\n
\t<link rel="stylesheet" href="css/style.css?ver=00109">\r\n
\t<link rel="stylesheet" href="css/search.css?ver=00109">\r\n
\t<script src="./js/jquery-1.7.2.min.js?ver=00109"></script>\r\n
\t<script src="./js/common.js?ver=00109"></script>\r\n
</head>\r\n
<body>\r\n
(中略)
</body>\r\n
</html>\r\n
\r\n
ごちゃごちゃしていて分かりにくいですが、1行目の
HTTP/1.1 200 OK\r\n
がHTTPステータスラインです。
HTTPステータスラインには「HTTPリクエストの結果」が、ざっくりと書かれています。
この例では
「HTTP/1.1」で「200 OK」が返ってきたよ!
と書いてあります。
2行目以降の
Server: nginx\r\n
Date: Tue, 11 Jul 2017 09:23:07 GMT\r\n
Content-Type: text/html\r\n
Transfer-Encoding: chunked\r\n
Connection: keep-alive\r\n
がHTTPレスポンスヘッダです。
HTTPレスポンスヘッダには「HTTPステータスラインに書ききれないレスポンスの情報」が、ごちゃごちゃと書かれています。
空行を意味する
\r\n
を挟んで、最後の
<!DOCTYPE html>\r\n
<html lang="ja">\r\n
<head>\r\n
\t<meta http-equiv="content-type" content="text/html; charset=UTF-8" />\r\n
\t<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\r\n
\r\n
\r\n
\t<meta name="keywords" content="\350\276\236\345\205\270,IT,\347\224\250\350\252\236,\345\210\235\345\277\203\350\200\205">\r\n
\t<meta name="author" content="Makoto Sasaki">\r\n
\t<meta name="copyright" content="Copyright PCS">\r\n
\r\n
\t<link rel="stylesheet" href="css/style.css?ver=00109">\r\n
\t<link rel="stylesheet" href="css/search.css?ver=00109">\r\n
\t<script src="./js/jquery-1.7.2.min.js?ver=00109"></script>\r\n
\t<script src="./js/common.js?ver=00109"></script>\r\n
</head>\r\n
<body>\r\n
(中略)
</body>\r\n
</html>\r\n
\r\n
がHTTPレスポンスボディです。
HTTPレスポンスボディには「ほれ、そのページだよ」の「そのページ」が入っています。
ホームページの中身ですね。
お願いの種類がGETメソッドの場合、返ってくるのはHTTPレスポンス全部です。
1.HTTPステータスライン(ステータスライン)
2.HTTPレスポンスヘッダ(ヘッダ)
3.HTTPレスポンスボディ(レスポンスボディ)
の3つが返ってきます。
お願いの種類がHEADメソッドの場合、HTTPレスポンスボディは返ってきません。
1.HTTPステータスライン(ステータスライン)
2.HTTPレスポンスヘッダ(ヘッダ)
の2つが返ってきます。
HTTPレスポンスボディの中身は「ほれ、そのページだよ」の「そのページ」です。
HEADメソッドは
基本的にはGETメソッドと同じだけど、ページの中身そのものは取得しない
お願いです。
(GETメソッドではなく)HEADメソッドを使うメリットは通信量の節約です。
例えば、ページ自体は見なくていいけどページがあるかないかをチェックしたいときとかに使います。
一言でまとめるよ
まぁ「HEADメソッド」って単語が出てきたら「『ヘッダ情報だけ、ちょうだい!』なお願いなんだな~」と お考えください。
おまけ
■訳してみるよ
「head(ヘッド)」の意味は「頭」とかです。
「method(メソッド)」の意味は「方法」とか「方式」とか「手法」とかです。
何となく くっつけると
頭(だけ見る)方式
となります。
■検索してみる?






