HTML片段的内容类型
问题的原因是由于在HTML片段中,没有一个特定的内容类型(Content type)来标识它们。这导致了一些困惑和不一致性,因为开发者需要选择一个适当的内容类型来表示他们的HTML片段。
为了解决这个问题,可以通过创建自己的HTTP头来指定内容类型。根据RFC 6648,基于"X-"的头部现在已经被弃用了。开发者可以选择一个足够独特且有意义的MIME类型来发明自己的内容类型。
然而,这种方法可能存在问题。为了避免这些问题,可以选择回退到使用"text/html"作为内容类型,或者通过JSON的方式来表示HTML片段,而不是使用`
在理想和可扩展的世界中,最好将服务器端从创建HTML和`
在处理HTML片段的内容类型时,出现了人们对于选择合适的内容类型的个人偏好的问题。如果只是在自己的应用程序中使用,那么选择哪种内容类型并不重要。但是,即使不是完整的文档,HTML片段仍然是HTML标记,所以我会选择保持使用"text/html"作为内容类型。
是的,你是对的。如果没有标准/规范/RFC,那么选择内容类型就成了个人偏好的问题。很遗憾,如果有一个常见的方式能够被广泛接受就好了。
解决这个问题的方法是制定一个标准、规范或者RFC,来规定处理HTML片段时应该使用的内容类型。这样一来,就能够统一大家对于内容类型的选择,避免个人偏好带来的混乱。这样的标准可以明确指定HTML片段的内容类型是什么,并且提供一些示例或者指导方针来帮助开发者在处理HTML片段时选择正确的内容类型。
总结起来,为了解决HTML片段的内容类型选择问题,需要制定一个标准、规范或者RFC,来统一大家对于内容类型的选择,避免个人偏好带来的混乱。这样的标准可以明确指定HTML片段的内容类型是什么,并提供一些示例或者指导方针来帮助开发者在处理HTML片段时选择正确的内容类型。
关于XML/HTML文档片段的问题,除了在注释中引用的已被标记为“不再维护”的xml-fragment
之外,似乎没有任何明确、官方的关于文档片段和内容类型头的参考。然而,有一些需要考虑的点:
- xml-fragment
规范在Content-Type
方面将完整文档和片段视为相同。
- MDN关于MIME类型的文档在完整文档和片段之间没有任何区别(强调部分已添加):
“所有HTML内容都应使用此类型。对于XHTML的其他MIME类型(如application/xml+html)在现今几乎没有用处(HTML5统一了这些格式)。”
- W3规范中的“8.4 解析HTML片段”明确规定了处理HTML文档片段的情况。除非解析器失败(遇到解析错误),否则它会假设给定的字符串是HTML。此外,无效/部分HTML非常常见,浏览器会尽可能完全地渲染它(而不是完全失败)。
对于一个完整的空HTML文档,最少所需的标签是:
- DOCTYPE: <!DOCTYPE html>
- 声明文档模式,特别是规范要求它们是“为了向后兼容”。
- 标题: <title>My Page</title>
忽略这些必需的元素不会改变内容的性质。在实际意义上,<p>hello world
几乎普遍被解释为HTML,只是不是一个有效的文档。
- RFC标准明确定义了text/plain
,尽管RFC的Content-Type
头规范引用了text/html
。这显然没有提供明确的指导,但也没有定义其他可能的替代方案。
考虑到唯一与W3有关的参考指出完整的XML文档和片段应被视为相同(而HTML是XML的子集),W3的片段解析算法没有区分(并假设它接收到的是HTML),MDN建议不使用任何替代的头部,而且没有被广泛接受的(甚至是值得注意的)替代方案,使用text/html
作为文档片段的内容类型将是明确的选择。我找不到任何先例来表明其他情况,并且使用一些自定义的MIME类型可能只会引起困惑(或更糟)。
如果您真的想在应用程序中区分完整文档和片段,您可以将其包装在JSON中,或者从服务器发送一个附加的自定义头部(在这方面,我找不到任何常见做法的参考,可能只会对其他开发人员造成困惑)。