【サイバーセキュリティ】データの圧縮形式はこれでお願い!:HTTPで送受信されるコンテンツ
はい、こんにちは。前回記事からの続きです。サイバーセキュリティを学ぶ前提知識として重要な「HTTPの仕組み」を紹介しています。
前回は、コンテンツ交渉で、クライアントが送るヘッダーのうち、Accept-charsetヘッダーについて取り上げました。どんな文字セットでデータを受け取るかを指定するものですが、現在ではブラウザがこれを発行しなくなりました。HTTPも時を経て変化していくのですね…。
さて、今回は、コンテンツ交渉でクライアントが送るヘッダー3つ目、Accept-Encodingについてご紹介します!
エンコード?クライアントはサーバにいったいどんな条件を伝えたいのでしょうか?
では、いってみましょう!
そもそもエンコードとは?
Accept-Encodingの「エンコード」。これはいったいどういう意味でしょうか。まずは、そこから確認しませんか。
エンコード(日本語では「符号化」)という単語、いろんな場面や文脈で見ますよね。動画配信、音声配信の文脈でも見かけます。
簡単にいってしまうと、「ルールに従いデータを変換すること」です。ただし、その目的は「圧縮するため」であることが多いです。
このAccept-encodingも例外ではありません。「送られるデータをどのような形式で圧縮してほしいか」を伝えるものです。メッセージボディを圧縮することで、データの伝送が効率化されます。
ということで、エンコードについては意味が分かりました。
どのような形式を指定できる?
では、どんなAccept-encodingが発行されるのか、具体例を見てみましょう!私が使っているブラウザ(Chrome)が発行しているものを転記しました。
ここでは、3つの圧縮形式を指定します。「gzip」「deflate」「br」の3つです。
「これらがどのようなアルゴリズムで圧縮されるのか」については、説明は割愛します(専門的すぎてよく分かりません)。
HTTPの仕組みを理解することが目的なら、「こんな圧縮形式があるんだな」くらいの理解でまずはOKでしょう!
圧縮しなくてもOK?
ちなみに、「identity」という値が指定されることがあります。これは、「圧縮してなくてもデータを受け付けますよ」という意味です。
なお、サーバ側の判断で、圧縮しないでデータを送ることも起こります。サーバ側が過負荷だったり、送信するデータがすでに圧縮済みだったりするときです。
品質係数はここでも使える!
圧縮形式にも優先度をつけたいこともありえるでしょう。
そんなときはどうするのでしょうか?そう、ここでも品質係数(;q=0.8など)が使えます。
例えば、次の通り。
deflateが最優先、gzipは第2優先、deflateでもgzipでもない圧縮形式が第3優先ということですね。
はい、本日はここまで!今回は、コンテンツ交渉で、クライアントが送るヘッダーのうち、Accept-encodingヘッダーについて解説しました。
次回は、次回はいよいよ4番目にして最後のヘッダーAccept-Languageをご紹介します。
では!
この記事が気に入ったらサポートをしてみませんか?