为什么在Wireshark tcp流中显示的HTTP响应有效负载为乱码?

时间:2017-11-29 14:08:50

标签: http encoding utf-8 tcp

我使用Wireshark嗅到了一个http(不是https)与网站的对话。
然后我使用Follow TCP stream观看对话,整个有效载荷都是完整的乱码(很多点和偶尔的字母)。

我在响应中看到了这个(Content-Type: text/html;charset=UTF-8)标头,并认为我可以将编码更改为UTF-8(在TCP流窗口中)。
它只是改变为不同的乱码(正方形和偶尔的字母中的大量问号)。

但是,当我使用Follow HTTP stream打开相同的对话时,它就会成为精美的HTML。

发生了什么事? 我的猜测是Wireshark解析HTTP头,因此知道要很好地显示有效载荷。 但是,为什么不简单地改为UTF-8显示器呢?为什么ASCII不能很好地显示,因为UTF-8应该向后兼容?

1 个答案:

答案 0 :(得分:1)

有几种可能性。其中一个主要是您正在查看gzip压缩内容,这些内容在当今Web服务器中非常典型,允许它们以压缩状态发回页面。如果是这种情况,请查找Content-Encoding:标题并检查其值。

另一种可能性是应用程序通过HTTP连接传输二进制数据,即使应用程序正在将Content-Type:设置为text/html。没有什么能使这个非法,但这是一个不好的做法,因为这个标题充当了浏览器确定如何处理数据的提示。