HTML片段的内容类型

HTML片段的内容类型,html,ajax,http,content-type,Html,Ajax,Http,Content Type,当服务器发送包含HTML文档的HTTP响应时,它通常使用text/HTML内容类型。如果响应是HTML片段,那么内容类型是否应该不同 例如,如果请求是来自客户端脚本的AJAX,并且整个响应正文是新文本,那么响应不是HTML文档。对于这些片段,应用程序是否应该将内容类型设置为除text/html之外的其他内容?如果是,那是什么?这是个人偏好。如果只是你的应用程序,那就没关系了。我会保留它text/html,因为它仍然是html标记,即使不是一个完整的文档 对于XML/HTML文档片段,除了注释中引

当服务器发送包含HTML文档的HTTP响应时,它通常使用
text/HTML
内容类型。如果响应是HTML片段,那么内容类型是否应该不同


例如,如果请求是来自客户端脚本的AJAX,并且整个响应正文是新文本,那么响应不是HTML文档。对于这些片段,应用程序是否应该将内容类型设置为除
text/html
之外的其他内容?如果是,那是什么?

这是个人偏好。如果只是你的应用程序,那就没关系了。我会保留它
text/html
,因为它仍然是html标记,即使不是一个完整的文档

对于XML/HTML文档片段,除了注释中引用的(现在标记为“不再维护”)之外,似乎没有对文档片段和内容类型标题的任何明确的官方引用。但是,需要考虑以下几点:

  • xml片段规范在
    内容类型方面对待完整文档和片段是相同的

  • 上的MDN文档不区分完整文档和片段(emphasis添加):

所有HTML内容都应使用此类型。替代MIME XHTML的类型(如application/xml+html)大多是无用的 如今(HTML5统一了这些格式)

  • W3规范明确列出了处理HTML文档片段的案例。除非解析器失败(遇到解析器错误),否则它将假定给定的字符串是HTML。此外,浏览器极为频繁地接收无效/部分HTML,并尽可能完整地呈现(而不是完全错误)

    对于完全无效的HTML文档,以下选项是:

    • DOCTYPE:
      -声明文档模式,特别是规范要求它们“”
    • 标题:
      My Page
    省略这些必需的元素不会改变内容的性质。实际上,
    hello world
    仍然几乎被普遍解释为HTML,它只是不是一个有效的文档

  • RFC标准仅明确定义了
    text/plain
    ,尽管参考文献
    text/html
    。这显然没有提供明确的指导,但也没有确定可能的替代方案

考虑到W3中唯一相关的引用说明完整的XML文档和片段应被视为相同的(HTML是XML的子集),W3片段解析算法没有区别(并假设它接收HTML),MDN建议不要使用任何替代头,并且没有广泛接受的方法(甚至是任何值得注意的)替代方法,使用
text/html
作为文档片段将是一个明确的选择。我找不到任何先例可以提出其他建议,使用一些自定义MIME类型可能只会导致混乱(或更糟)


如果您真的想在应用程序中区分完整文档和片段,可以用JSON将其包装,或者从服务器发送一个额外的自定义头(我找不到与此相关的任何常见实践的参考,可能会让其他开发人员感到困惑).

是的,我也在解决这个问题。但是,如果您对现有HTTP头到您的用例的映射不完全满意,那么创建您自己的HTTP头是完全可以的。在这个方向上,“X-”基本上,只要你选择一种足够独特且有意义的mime类型,你就可以自由地发明自己的mime类型。但正如@Wrikken在他的评论中提到的,这可能会有问题。因此,为了避免所有这些问题,你可以回退到text/html或通过JSON方式,而不是以理想且可扩展的方式在世界范围内,服务器端不应创建HTMLs/DIVs相关文章:(换句话说:充当特定mime类型可能会导致数据的意外更改)@Wrikken,是的,我读到了,但它已经超过7年了,我不确定巴尔先生描述的那种内容被破坏的情况是否还会发生。好吧,我们现在确实有更多的移动设备使用“智能”代理进行慢速连接,Opera Turbo出现在我的脑海中,但我不知道它们除了压缩之外还能做些什么。不管怎样,答案是“html fragements是否有特定的mime类型”是否定的,您可能可以将其作为任何文本/*类型使用,尽管我更喜欢json响应,可能带有嵌入的html字符串,因此响应可以通过客户端上的一点js框架来做其他事情(通知会话超时,重新加载整个页面等等)我同意以JSON字符串的形式返回标记是很好的。Otoh,jQ之类的东西,如
$(“#id”).load(url)
,已经成为常规,但显然没有相应的内容类型。有关XHTML,请参阅(XML片段的内容类型与完整的XML相同,是
text/XML
,或者在本例中是
application/xhtml+XML
)。另请参见是,您是对的。如果没有标准/spec/rfc,则是个人偏好。遗憾的是,一种通用的方法会很好。