「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

Content-Length

pointこの用語のポイント

pointHTTPヘッダの項目だよ

point渡すデータの長さ(サイズ)が入ってるよ

スポンサーリンク

簡単に書くよ

Content-Length(読:コンテントレングス、コンテンツレングス)とは

ホームページのファイルを受け渡しするときのやり取り「このページをおくれ」「ほれ、そのページだよ」にくっつけて送られる「今おまえに渡しているデータは、これくらいの大きさだよ」な情報が書いてある項目
です。


image piyo

詳しく書くよ

サクっと一言で説明すると

ホームページのやり取りをするときに出てくる「渡すデータの大きさ」が書いてある項目

が「Content-Length」です。

あなたがホームページを見ようとすると、まず、ホームページを見るときに使うソフトWebブラウザからホームページのファイルが置いてあるコンピュータWebサーバに対して「このページをおくれ」と お願いが出されます。

Content-Length

そのお願いに対して、WebサーバさんからWebブラウザさんに「ほれ、そのページだよ」と お返事がきます。

Content-Length2

お返事を受け取ったWebブラウザさんは、受け取ったページを画面上に表示します。

Content-Length3

これが普通にホームページを見るときの流れです。

ここでWebブラウザさんがWebサーバさんに「このページをおくれ」と お願いを出したところに注目してください。

Content-Length4

実は、このお願いには「今渡しているお願いデータは、これくらいの大きさだよ」という情報がくっついています。

Content-Length5

この「今渡しているお願いデータは、これくらいの大きさだよ」という情報が書いてある項目がContent-Lengthです。

Content-Length6

WebブラウザさんからWebサーバさんに出した「このページをおくれ」な お願いを専門用語で「HTTPリクエスト」と言います。

Content-Length7

HTTPリクエストは3つの部品から成り立っています。

1.HTTPリクエストライン(リクエストライン)
2.HTTPリクエストヘッダ(ヘッダ)
3.HTTPリクエストメッセージボディ(メッセージボディ)


の3つです。
構造としては

「リクエストライン」
「ヘッダ」
空行CRLF】)
「メッセージボディ」


のようになっています。

Content-Length8

この3つのうち「HTTPリクエストヘッダ(ヘッダ)」の中に「Content-Length」という項目があるのです。
Content-Lengthの項目にはメッセージボディの大きさが書いてあります。

……と言葉で説明されても分かりにくいと思いますので、実際のHTTPリクエストを見てみましょう。

実際のHTTPリクエストは、例えば以下のような内容になっています。

POST /search.html HTTP/1.1\r\n
Host: wa3.i-3-i.info\r\n
Connection: keep-alive\r\n
Content-Length: 38\r\n
Cache-Control: max-age=0\r\n
Origin: http://wa3.i-3-i.info\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: うんちゃら\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Referer: http://wa3.i-3-i.info/index.html\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: ja,en-US;q=0.8,en;q=0.6\r\n
\r\n
q=test&submitSearch=%E6%A4%9C%E7%B4%A2


ごちゃごちゃしていて分かりにくいですが、1行目の

POST /search.html HTTP/1.1\r\n

の部分がリクエストラインです。

Host: wa3.i-3-i.info\r\n
Connection: keep-alive\r\n
Content-Length: 38\r\n
Cache-Control: max-age=0\r\n
Origin: http://wa3.i-3-i.info\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: うんちゃら\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Referer: http://wa3.i-3-i.info/index.html\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: ja,en-US;q=0.8,en;q=0.6\r\n


の部分がヘッダです。

q=test&submitSearch=%E6%A4%9C%E7%B4%A2

の部分がメッセージボディになります。

ヘッダの中に

Content-Length: 38\r\n

と書いてありますよね。

これが、Content-Lengthです。
「38」という数字はメッセージボディの大きさを示しています。

数えると分かりますが、メッセージボディの中身

q=test&submitSearch=%E6%A4%9C%E7%B4%A2

はアルファベット38文字です。
つまり、38バイトです。

Content-Lengthにはメッセージボディのサイズが書いてあります。

これでContent-Lengthについて何となく分かったと思いますが、せっかくなので、Webサーバさんからの返事の方にも触れておきましょう。

WebサーバさんがWebブラウザさんに「ほれ、そのページだよ」と お返事を出したところに注目してください。

Content-Length9

実は、このお返事にも「今渡しているお返事データは、これくらいの大きさだよ」という情報がくっついています。

Content-Length10

この「今渡しているお返事データは、これくらいの大きさだよ」という情報が書いてある項目がContent-Lengthです。

Content-Length11

WebサーバさんからWebブラウザさんに出した「ほれ、そのページだよ」なお返事を専門用語で「HTTPレスポンス」と言います。

Content-Length12

HTTPレスポンスは3つの部品から成り立っています。

1.HTTPステータスライン(ステータスライン)
2.HTTPレスポンスヘッダ(ヘッダ)
3.HTTPレスポンスボディ(レスポンスボディ)


の3つです。
構造としては

「ステータスライン」
「ヘッダ」
(空行【CR+LF】)
「レスポンスボディ」


のようになっています。

Content-Length13

この3つのうち「HTTPレスポンスヘッダ(ヘッダ)」の中に「Content-Length」という項目があるのです。
Content-Lengthの項目にはレスポンスボディの大きさが書いてあります。

それでは次に実際のHTTPレスポンスを見てみましょう。

……と思ったのですが、HTTPリクエストのときと似たようなものなので止めておきます。

ちなみにContent-Lengthは絶対についているとは限りません。
ご注意ください。
「あれ?Content-Lengthがついてないよ?」となることもあるでしょう。
送る方が「Content-Lengthをつけて送るよ!」としないと、ついていなかったりします。


image piyo2

一言でまとめるよ

まぁ「Content-Length」って単語が出てきたら「送るデータのサイズが書いてある項目なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像073
書籍画像046

おまけ

■訳してみるよ

「content(コンテント)」の意味は「中身」とか「内容物」とかです。
「length(レングス)」の意味は「長さ」とかです。
何となく くっつけると

中身の長さ

となります。




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
ソフトウェア開発現場の「失敗」集めてみた。 42の失敗事例で学ぶチーム開発のうまい進めかた
クイズで学ぶUIデザイン ユーザビリティの基本が身につく50問