我使用 Wireshark 嗅探了与网站的 http
(不是 https
)对话。
然后我使用 Follow TCP stream
来观看对话,整个有效负载完全是乱码(很多点和偶尔的字母)。
我在响应中看到这个 (Content-Type: text/html;charset=UTF-8
) header ,我想我可以将编码更改为 UTF-8(在 TCP 流窗口中) .
它只是变成了不同的乱码(方 block 中有很多问号,偶尔还有字母)。
但是,当我使用 Follow HTTP stream
打开同一个对话时,它会以精美的 HTML 形式出现。
这是怎么回事?
我的猜测是 Wireshark 解析 HTTP header ,因此知道如何很好地显示有效负载。
但是,为什么简单地更改为 UTF-8 显示效果不佳?为什么 ASCII 不能很好地显示,因为 UTF-8 应该向后兼容它?
最佳答案
有几种可能性。其中一个主要问题是您正在查看 gzip 压缩的内容,这在当今的 Web 服务器中非常典型,允许它们以压缩状态发送回页面。如果是这种情况,请查找 Content-Encoding:
header 并检查其值。
另一种可能性是应用程序正在通过 HTTP 连接传输二进制数据,即使应用程序将 Content-Type:
设置为 text/html
。尽管这是一种不好的做法,但没有什么可以使这成为非法的,因为此 header 充当浏览器确定如何处理数据的提示。
关于http - 为什么 HTTP 响应负载在 Wireshark tcp 流中显示为乱码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47554734/