【问题标题】:How to determine the Content-Type in an HTTP Response如何确定 HTTP 响应中的 Content-Type
【发布时间】:2026-01-08 22:15:01
【问题描述】:

我正在构建一个 Web 服务器作为练习。当我收到一个原始请求时,它会被解析成一个简单的语法树,并通过评估这棵树来构建一个响应。我的问题是:When sending an HTTP Response, does the Content-Type field get set by taking the file extension of the requested resource and looking it up in a dictionary of MIME-types? 一个很好的例子是对 favicon.ico 的响应是如何构建的剖析。对此的任何见解将是最有帮助的。谢谢。

【问题讨论】:

  • 这听起来像是一道大学作业题...
  • 我只是假设答案是我所想的......您获取所请求资源的文件扩展名,并在您的 MIME 映射中查找它。

标签: apache http web webserver


【解决方案1】:

默认情况下,Web 服务器会查看文件扩展名并选择它应该将文件解释为哪种内容类型。但是,服务器端脚本可以发送自定义标头(例如 PHP 的 header() 函数)来覆盖设置。例如,如果您使用以下代码将内容类型为image/png 发送到 Web 服务器,则 JPEG 可以被解释为 PNG:

header('Content-Type: image/png');

对于非文件请求,Web 服务器直接查看自定义标头。

Web 服务器映射具有 MIME 类型的扩展。当您标记 时,Apache 使用AddType directive 来识别文件的 MIME 类型,而 IIS 和其他 Web 服务器具有类似的设置。

【讨论】:

  • 这不能回答我的问题。我在问 Content-Type 字段是如何派生的。不是 MIME 映射的工作方式。
  • Content-Type 是 MIME 类型。
  • 仍然没有回答问题。让我换个说法:如何服务器知道在 MIME 映射中查找什么类型?