是否有MIME类型告诉浏览器“不要尝试检测类型,只显示为文本”?

时间:2011-10-26 13:13:14

标签: http mime-types

在测试一些HTTP服务器代码时,我注意到一些奇怪的事情:如果我返回Content-Type: text/plain,浏览器将将内容呈现为纯文本。相反,他们似乎认为服务器必须配置错误,并且他们试图检测内容类型。

例如,如果我返回PNG文件的内容,但使用Content-Type: text/plain

  • FireFox和IE9都会查看URL上的扩展名。如果它以.png结尾,则会将其显示为图像。如果不是(例如,如果我从以.xyz结尾的网址返回相同的内容),则会提示我保存文件。
  • Chrome和Opera都会查看文件的内容,检测到它是PNG,并将其显示为图像。

当然,在生产中将PNG作为text/plain返回是没有意义的;但是,如果我正在测试我的服务器是否返回正确的Content-Type,则浏览器的第二次猜测行为会受到影响。此外,它只是有点傻,这让我很好奇是否有办法解决它。

有没有办法 - 使用不同的Content-Type,或者额外的HTTP标头,或者其他什么 - 我可以告诉浏览器,“将其显示为文本,不是真的,我实际上知道我是什么”我在做什么??

2 个答案:

答案 0 :(得分:1)

有关背景信息,请参阅https://tools.ietf.org/html/draft-ietf-websec-mime-sniff-03#section-4

在某些UA中,添加为自定义参数,例如

文本/无格式; imeanit =是

可能有帮助。

某些IE版本支持

X-Content-Type-Options:nosniff

请参阅http://msdn.microsoft.com/en-us/library/gg622941%28v=vs.85%29.aspx

答案 1 :(得分:0)

实际返回的是哪种数据?您确定它依赖于URL,还是服务器忽略了您更改内容类型的请求?你检查过浏览器看到的标题了吗?如果你真的发送png为“text”,那么我认为浏览器通过检测实际数据类型做了正确的事情,因为你可能会在文本渲染例程中引起异常。