接受 HTML5 多语言作为 application/xhtml+xml

Acceptance of HTML5 Polyglot served as application/xhtml+xml

提问人: 提问时间:10/27/2014 最后编辑:unor 更新时间:2/12/2015 访问量:182

问:

在浏览器支持和 HTML5 合规性方面,(假设页面实际上是 XML 格式正确的)提供带有 HTTP 标头的 HTML5 多语言页面有多方便?application/xhtml+xmlContent-type

在早期,我提供了XHTML宽度标题,因为否则某些浏览器根本没有呈现页面或呈现,但在行为上有一些奇怪的行为。text/html

HTML5 标准甚至要求浏览器支持 application/xhtml+xml 内容类型吗?跨浏览器的实际支持状态如何?今天服务有什么缺点?application/xhtml+xml

XML HTML、 XHTML 内容类型 、多语言标记

评论

0赞 10/27/2014
始终 ,但最重要的是您的编码类型text/html

答:

1赞 Alohci 10/27/2014 #1

不,HTML5 不需要浏览器支持 或 .application/xhtml+xmltext/html

它只是

为了与现有内容和先前的规范兼容,此 规范描述了两种创作格式:一种基于 XML (称为 XHTML 语法),以及一个使用自定义格式的语法 受 SGML(称为 HTML 语法)的启发。实现 必须支持这两种格式中的至少一种,尽管支持 两者都受到鼓励。

自 IE9 以来,所有浏览器都支持。application/xhtml+xml

假设您可以编写格式正确的 XML,这实际上并不难,最大的问题是并非所有 Unicode 字符都是有效的 XML 字符,因此您必须始终对可能回显到屏幕上的用户输入进行额外的清理,以清理 XML 中无效的任何字符,否则您的网页将无法正确呈现(或根本无法呈现)。

此外,第三方 JS 库并不总是与多语言兼容。特别是,有些依赖于 XML 文档不支持的 document.write()。

评论

0赞 Chinoto Vokro 3/10/2016
“并非所有 Unicode 字符都是有效的 XML 字符,因此必须始终对用户输入进行额外的审查” 所有 Unicode 字符都有效。我相信你得到的是XML只定义了5个字符的实体引用:quot,apos,lt,gt,amp。无论如何,如有必要,应始终对用户输入进行清理(删除不需要的数据)并进行转义(使数据在上下文中安全)。如果您在以前正常工作的页面上遇到 XML 解析错误,这通常意味着您忘记了逃逸,并且使自己容易受到漏洞的影响。这就是我使用 XML 解析进行测试的原因。
0赞 Alohci 3/10/2016
@chinoto - 不,我指的不是命名字符实体引用。有效的 XML 字符省略代理项块、U+FFFE 和 U+FFFF。
0赞 Chinoto Vokro 3/15/2016
哦,是的,忘了那些家伙。但需要明确的是,似乎只有在未配对或配对不正确时才允许使用它们。