HTML片段的内容类型
当服务器发送包含HTML文档的HTTP响应时,它通常使用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文档片段,除了注释中引
text/HTML
内容类型。如果响应是HTML片段,那么内容类型是否应该不同
例如,如果请求是来自客户端脚本的AJAX,并且整个响应正文是新文本,那么响应不是HTML文档。对于这些片段,应用程序是否应该将内容类型设置为除
text/html
之外的其他内容?如果是,那是什么?这是个人偏好。如果只是你的应用程序,那就没关系了。我会保留它text/html
,因为它仍然是html标记,即使不是一个完整的文档 对于XML/HTML文档片段,除了注释中引用的(现在标记为“不再维护”)之外,似乎没有对文档片段和内容类型标题的任何明确的官方引用。但是,需要考虑以下几点:
- xml片段规范在
内容类型方面对待完整文档和片段是相同的
- 上的MDN文档不区分完整文档和片段(emphasis添加):
- W3规范明确列出了处理HTML文档片段的案例。除非解析器失败(遇到解析器错误),否则它将假定给定的字符串是HTML。此外,浏览器极为频繁地接收无效/部分HTML,并尽可能完整地呈现(而不是完全错误)
对于完全无效的HTML文档,以下选项是:
- DOCTYPE:
-声明文档模式,特别是规范要求它们“” - 标题:
My Page
仍然几乎被普遍解释为HTML,它只是不是一个有效的文档hello world
- DOCTYPE:
- RFC标准仅明确定义了
,尽管参考文献text/plain
。这显然没有提供明确的指导,但也没有确定可能的替代方案text/html
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,则是个人偏好。遗憾的是,一种通用的方法会很好。