是否始终需要内容类型HTTP标头?

是否始终需要内容类型HTTP标头?,http,browser,cross-browser,Http,Browser,Cross Browser,这个问题是关于浏览器行为以及从html、js或css文件中链接、导入、包括或转换css、js、图像和其他资源的协议规范 在测试不同浏览器中的静态文件和压缩内容交付时,我发现,如果脱离约定,某些浏览器的行为会有所不同。例如,如果您不发送contentdisposition:inline头,如果您像在main styles.css.gz中一样使用文件扩展名.gz,则safari的最新版本无法正确处理预压缩的gzip css文件 我的问题是关于内容类型响应头的浏览器行为。既然,和标记已经合理地指定了资

这个问题是关于浏览器行为以及从html、js或css文件中链接、导入、包括或转换css、js、图像和其他资源的协议规范

在测试不同浏览器中的静态文件和压缩内容交付时,我发现,如果脱离约定,某些浏览器的行为会有所不同。例如,如果您不发送
contentdisposition:inline头,如果您像在
main styles.css.gz
中一样使用文件扩展名
.gz
,则safari的最新版本无法正确处理预压缩的gzip css文件


我的问题是关于
内容类型
响应头的浏览器行为。既然
标记已经合理地指定了资源的内容类型,那么是否可以安全地跳过此标题,或者某些浏览器出于某些历史原因需要它?

简言之,不,它不是必需的。但这是推荐的。 据我所知,大多数浏览器都会正确处理
,如果它们没有发送标题,但没有真正好的理由不发送标题。基本上,没有
内容类型
标题,浏览器只能根据内容进行尝试和猜测

从RFC2616:

内容类型指定基础数据的媒体类型。
内容编码可用于指示任何附加内容
用于数据的编码,通常用于数据
压缩,这是请求的资源的属性。有
没有默认编码

任何包含实体正文的HTTP/1.1消息都应包含一个
内容类型标题字段定义该正文的媒体类型。如果
并且仅当媒体类型不是由内容类型字段给出时,
接收者可以通过检查媒体类型来猜测媒体类型
用于标识的URI的内容和/或名称扩展名
资源。如果媒体类型仍然未知,则收件人应
将其视为类型“应用程序/八位字节流”

关于RFC2119中规定的关键字应:

应该:这个词或形容词“推荐”的意思是有
在特定情况下,可能存在有效的理由忽略a
特定项目,但必须理解其全部含义,并且
在选择不同的课程之前仔细权衡


我在java中遇到了一个问题,我试图通过库chrris.dj.nativeswing.swtimpl.components.JWebBrowser发布一些数据,该库基本上在java程序中显示internet explorer。但是后端的简单php脚本无法解析我的post数据。(使用WebBrowserNavigationParameters在导航到某个页面时设置帖子数据)我最终发现必须为php设置内容类型标题才能正确粘贴帖子数据。(这不是默认设置。)将其设置为内容类型:application/x-www-form-urlencoded,一切正常。所以,我想在向php发布数据时,应该始终设置内容类型。

这是向后兼容所必需的

例如:
internetexplorer10
需要
内容类型:image/svg+xml
才能呈现任何svg文件

IE10IE9以及其他浏览器可能总是需要
内容类型
标题