我使用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应该向后兼容?
答案 0 :(得分:1)
有几种可能性。其中一个主要是您正在查看gzip压缩内容,这些内容在当今Web服务器中非常典型,允许它们以压缩状态发回页面。如果是这种情况,请查找Content-Encoding:
标题并检查其值。
另一种可能性是应用程序通过HTTP连接传输二进制数据,即使应用程序正在将Content-Type:
设置为text/html
。没有什么能使这个非法,但这是一个不好的做法,因为这个标题充当了浏览器确定如何处理数据的提示。