我正在构建一个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的响应的解剖。对此有任何见解将是最有帮助的。感谢。
答案 0 :(得分:2)
默认情况下,Web服务器会查找文件扩展名并选择它应将文件解释为的内容类型。但是,服务器端脚本可以发送自定义标头(例如PHP的header()
功能)来覆盖设置。例如,如果使用以下代码将内容类型作为image/png
发送到Web服务器,则JPEG可以解释为PNG:
header('Content-Type: image/png');
对于非文件请求,Web服务器直接查看自定义标头。
Web服务器映射MIME类型的扩展。在标记apache时,Apache使用AddType directive标识文件的MIME类型,而IIS和其他Web服务器具有类似的设置。