未指定此类标头时,浏览器如何知道内容类型?

Posted

技术标签:

【中文标题】未指定此类标头时,浏览器如何知道内容类型?【英文标题】:How does browser know the content type when such header is not specified? 【发布时间】:2010-12-01 10:48:30 【问题描述】:

如果服务器不发送 content-type 标头,浏览器如何判断他得到了哪种内容?例如,当我使用 chrome 获得 SO logo 时,图像是完整的,尽管服务器没有说明它的扩展名(至少,明确地)

【问题讨论】:

对于它的价值,您链接的 SO 徽标在这里带有 Content-Type: image/png 标题。 好吧,httpdebuggerpro 没有向我展示这个 【参考方案1】:

如果类型未在 HTTP 标头中明确声明,大多数浏览器都会进行内容嗅探。他们正在寻找他们知道的特定签名,从而猜测媒体类型。

有关示例,请参阅Determining the type of a new resource in a browsing context in the html 5 specification 部分或此Draft of Content-Type Processing Model

【讨论】:

【参考方案2】:

它可以通过检查文件来猜测内容类型。

例如,PNG 在前 4 个字节中有“PNG”。

【讨论】:

【参考方案3】:

不同的浏览器以不同的方式处理它。

Internet Explorer 猜测 based on content。实际上经常忽略Content-Type 标头,而是使用自己的猜测。

一些浏览器也会考虑扩展。

【讨论】:

以上是关于未指定此类标头时,浏览器如何知道内容类型?的主要内容,如果未能解决你的问题,请参考以下文章

使用“application/x-www-form-urlencoded”内容类型请求标头时,未正确发送 HttpClient 后正文参数

为啥我们需要设置标头请求的内容类型

如何强制浏览器在内容类型 http 标头中设置字符集

IIS 网站正在为 zip 文件发送多个内容类型的标头

如何使用 Blazor 呈现知道其内容类型的字节数组?

JAX-RS Jersey 读取内容类型为“*”的实体