http - 为什么 HTTP 响应负载在 Wireshark tcp 流中显示为乱码?

标签 http encoding utf-8 tcp

我使用 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/

相关文章:

javascript - 使用 Promise 链接 http 请求

http - set-cookie2 和 set-cookie 的区别

java - 为什么这个 Java 编码是 UTF-8 --> Latin1 错误?

linux - 当我按下键盘上的一个键并且它显示在 shell 上时,实际发生的 Action 路径是什么?

java - 在java中使用CP1252编码解码Inputsteam

python - 在 Python 中从 BaseHTTPServer 下载带有 unicode 字符的文件

php - 无效的 PHP JSON 编码

java - 访问 Endpoint.publish 的网络服务器

python - 发送电子邮件时 MIMEText UTF-8 编码问题

android - 在 Android WebView 中获取 HTTP 状态码