是否始终需要Content-Type HTTP标头?

Ham*_*raz 16 browser http cross-browser

此问题涉及浏览器行为以及用于链接,导入,包含或从网页,js文件或css文件中调整CSS,JS,图像和其他文件的协议规范.

在测试静态文件和压缩内容交付时,我发现如果您不再使用约定,很少有浏览器会产生问题.喜欢:如果你不Content-Disposition: inline;为所有内联CSS,JS等文件发送标题,IE6会产生问题,如果你使用.gz像文件扩展名那样,一个不太旧版本的safari不能正确处理gzip压缩文件main-styles.css.gz.

我想问一下浏览器关于Content-Type响应头的行为.既然<link>,<script><img>已指定内容类型,可这头被安全地跳过,或者做一些浏览器需要它由于某种原因?

arc*_*rty 11

简而言之,不,这不是必需的.但它是推荐的.据我所知,大多数浏览器会治疗<link>,<script>以及<img>是否正确,他们不与头一起发送,但没有真正的好理由不发送头.基本上,没有Content-Type标题,浏览器就会根据内容尝试猜测.

来自RFC2616:

Content-Type指定基础数据的媒体类型.
内容编码可用于指示
应用于数据的任何附加内容编码,通常用于数据
压缩的目的,其是所请求资源的属性.有
没有默认的编码.

包含实体主体的任何HTTP/1.1消息应该包括
定义该主体的媒体类型的Content-Type头部字段.如果
且仅当介质类型不是由内容类型字段中给出的
接收方可能试图通过它的检验猜测的媒体类型
的内容和/或URI的扩展名(S)用于标识
资源.如果媒体类型仍然未知,则收件人应该
将其视为"application/octet-stream"类型.

关于RFC2119中指定的关键字SHOULD:

应该:这个词,或形容词"推荐",意味着
在特定情况下可能存在忽略
特定项目的正当理由,但
在选择不同的课程之前必须理解并仔细权衡全部含义.