見出し画像

【サイバーセキュリティ】データの圧縮形式はこれでお願い!:HTTPで送受信されるコンテンツ

はい、こんにちは。前回記事からの続きです。サイバーセキュリティを学ぶ前提知識として重要な「HTTPの仕組み」を紹介しています。

前回は、コンテンツ交渉で、クライアントが送るヘッダーのうち、Accept-charsetヘッダーについて取り上げました。どんな文字セットでデータを受け取るかを指定するものですが、現在ではブラウザがこれを発行しなくなりました。HTTPも時を経て変化していくのですね…。

さて、今回は、コンテンツ交渉でクライアントが送るヘッダー3つ目、Accept-Encodingについてご紹介します!

エンコード?クライアントはサーバにいったいどんな条件を伝えたいのでしょうか?

では、いってみましょう!

そもそもエンコードとは?

Accept-Encodingの「エンコード」。これはいったいどういう意味でしょうか。まずは、そこから確認しませんか。

エンコード(日本語では「符号化」)という単語、いろんな場面や文脈で見ますよね。動画配信、音声配信の文脈でも見かけます。

簡単にいってしまうと、「ルールに従いデータを変換すること」です。ただし、その目的は「圧縮するため」であることが多いです。

このAccept-encodingも例外ではありません。「送られるデータをどのような形式で圧縮してほしいか」を伝えるものです。メッセージボディを圧縮することで、データの伝送が効率化されます。

ということで、エンコードについては意味が分かりました。

どのような形式を指定できる?

では、どんなAccept-encodingが発行されるのか、具体例を見てみましょう!私が使っているブラウザ(Chrome)が発行しているものを転記しました。

Accept-Encoding: gzip, deflate, br

ここでは、3つの圧縮形式を指定します。「gzip」「deflate」「br」の3つです。

「これらがどのようなアルゴリズムで圧縮されるのか」については、説明は割愛します(専門的すぎてよく分かりません)。

HTTPの仕組みを理解することが目的なら、「こんな圧縮形式があるんだな」くらいの理解でまずはOKでしょう!

圧縮しなくてもOK?

ちなみに、「identity」という値が指定されることがあります。これは、「圧縮してなくてもデータを受け付けますよ」という意味です。

なお、サーバ側の判断で、圧縮しないでデータを送ることも起こります。サーバ側が過負荷だったり、送信するデータがすでに圧縮済みだったりするときです。

品質係数はここでも使える!

圧縮形式にも優先度をつけたいこともありえるでしょう。

そんなときはどうするのでしょうか?そう、ここでも品質係数(;q=0.8など)が使えます。

例えば、次の通り。

Accept-Encoding: deflate;q=1.0, gzip;q=0.8, *;q=0.1

deflateが最優先、gzipは第2優先、deflateでもgzipでもない圧縮形式が第3優先ということですね。



はい、本日はここまで!今回は、コンテンツ交渉で、クライアントが送るヘッダーのうち、Accept-encodingヘッダーについて解説しました。

次回は、次回はいよいよ4番目にして最後のヘッダーAccept-Languageをご紹介します。

では!

この記事が気に入ったらサポートをしてみませんか?