HTTP1.1はBODYが圧縮されることがある件

HTTPの応答を受け取って内容を解析するコードをつくっていたのだけど、
HTTP通信は全てテキスト形式だと思っていたら罠があった。

HTTP1.1は、BODY部がgzip圧縮されてくることがある!

圧縮、非圧縮を判定するキーはHEADER部のContent-Encodingにある。

Content-Encoding: gzip

などとなっていたら、BODY部は圧縮されている。
gzip以外に、x-gzipとかdeflateとか書かれてることもある。

その場合は、BODY部をzlibなどで展開する必要がある。

HTTP1.1対応のブラウザは暗黙にこれをやってるんですね。
(IEやFirefoxはHTTP1.1を拒否する設定もできる)

タイトルとURLをコピーしました