在测试一些HTTP服务器代码时,我注意到一些奇怪的事情:如果我返回Content-Type: text/plain
,浏览器将不将内容呈现为纯文本。相反,他们似乎认为服务器必须配置错误,并且他们试图检测内容类型。
例如,如果我返回PNG文件的内容,但使用Content-Type: text/plain
:
.png
结尾,则会将其显示为图像。如果不是(例如,如果我从以.xyz
结尾的网址返回相同的内容),则会提示我保存文件。当然,在生产中将PNG作为text/plain
返回是没有意义的;但是,如果我正在测试我的服务器是否返回正确的Content-Type
,则浏览器的第二次猜测行为会受到影响。此外,它只是有点傻,这让我很好奇是否有办法解决它。
有没有办法 - 使用不同的Content-Type
,或者额外的HTTP标头,或者其他什么 - 我可以告诉浏览器,“将其显示为文本,不是真的,我实际上知道我是什么”我在做什么??
答案 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”,那么我认为浏览器通过检测实际数据类型做了正确的事情,因为你可能会在文本渲染例程中引起异常。