将页面作为 text/xml 和 application/xhtml+xml 有啥区别?
Posted
技术标签:
【中文标题】将页面作为 text/xml 和 application/xhtml+xml 有啥区别?【英文标题】:What is the difference between serving a page as text/xml and application/xhtml+xml?将页面作为 text/xml 和 application/xhtml+xml 有什么区别? 【发布时间】:2011-10-10 23:06:11 【问题描述】:作为 text/xml 和 application/xhtml+xml 提供页面有什么区别?
【问题讨论】:
本主题推荐阅读:hixie.ch/advocacy/xhtml 【参考方案1】:引用自specification:
“application/xhtml+xml”媒体类型 [RFC3236] 是主要媒体 XHTML 系列文档的类型。 '应用程序/xhtml+xml' 应该是 用于将 XHTML 文档提供给 XHTML 用户代理(代理 明确表明他们支持这种媒体类型)。这种媒体类型 使用 XHTML Family 文档类型编写文档时必须使用 从外部命名空间添加元素和属性,例如 XHTML+MathML [XHTML+MathML]。
因此,如果客户端支持,请使用 application/xhtml+xml
为您的 XHTML 页面提供服务,否则您可以使用 text/html
。
来自specification的另一句话:
如果 Accept 标头明确包含 application/xhtml+xml(带有 没有“q”参数或正的“q”值)交付文档 使用该媒体类型。
如果 Accept 标头明确包含 text/html(没有“q”参数或正的“q”值) 使用该媒体类型传送文档。
如果接受标头 包含“* /*”(一些用户代理用来表示的约定 他们会接受任何东西),使用 text/html 传递文档。
换句话说,宣称他们支持 XHTML 家族的请求者 文档将接收 XHTML 媒体类型的文档,并且所有 (至少声称)支持 HTML 或“一切”的其他请求者 将使用 HTML 媒体类型接收文档。与用户打交道 不满足这些标准的代理不在范围内 这份文件。
当一个 XHTML 文档不符合这些准则时,它应该 只能作为媒体类型 application/xhtml+xml 交付。
text/xml
不应用于提供 XHTML 网页。您可以使用它来提供其他不代表 XHTML 的 XML 文档。
【讨论】:
快速问题:我们也可以将 application/xhtml+xml 写成 application/xml+xhtml 吗?换句话说,我们可以随意倾斜顺序吗? @Pacerier,不,这不是标准的。 快速提问:application/xhtml 或 [SPACE]application/xhtml+xml 或 application[SPACE]/xhtml+ 怎么样xml[空格] @Pacerier,嗯,好问题。我不能肯定这一点。将不得不检查。我能说的是,我从未见过有人使用它。但我不确定它是否会给用户代理带来一些问题。 @Pacerier: iana.org/assignments/media-types/index.html - 我找不到任何包含空格的类型或子类型。【参考方案2】:从技术上讲,唯一的区别是 text/xml 文档的编码应该默认为 US-ASCII(如果 HTTP 标头或源中没有指定编码),但在 application/xml 和 */*+xml 中,UTF- 8 是默认编码。我认为没有浏览器坚持这一点。
application/xhtml+xml MIME 类型应该主要用于 XHTML(对于 SVG,您应该使用 image/svg+xml)。但是,实际上,这些 MIME 类型之间没有区别,因为浏览器对所有与 XML 相关的 MIME 类型使用相同的 XML 解析器。
请记住,application/xhtml+xml 并没有说明文档的内容。您仍然需要为属于 XHTML 命名空间的元素指定 xmlns="http://www.w3.org/1999/xhtml"
属性。否则,它们将被视为通用 XML 元素。
【讨论】:
以上是关于将页面作为 text/xml 和 application/xhtml+xml 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
当内容类型和内容编码标头一起发送时,表达js拒绝发布请求(400错误请求)