html - HTML 片段的内容类型

标签 html ajax http content-type

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

例如,如果请求是来自客户端脚本的 AJAX,并且整个响应正文是 <div><p>New text</p></div>那么响应不是 HTML 文档。应用程序是否应将内容类型设置为 text/html 以外的类型对于这样的片段?如果是,是什么?

最佳答案

关于 XML/HTML 文档片段, xml-fragment 除外在评论中引用(现在标记为“不再维护”),似乎没有对文档片段和内容类型标题的任何明确的官方引用。但是,需要考虑一些要点:

  • 关于 Content-Type,xml 片段规范对完整文档和片段的处理方式相同。 .

  • 关于 MIME Types 的 MDN 文档不区分完整文档和片段(添加了强调):

All HTML content should be served with this type. Alternative MIME types for XHTML (like application/xml+html) are mostly useless nowadays (HTML5 unified these formats).

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

    minimum tags required对于完全无效的 HTML 文档是:

    • 文档类型:<!DOCTYPE html> - 声明文档模式,特别是规范要求它们“for legacy reasons
    • 标题:<title>My Page</title>

    省略这些必需元素不会改变内容的性质。在实际意义上,<p>hello world仍然几乎被普遍解释为 HTML,它只是不是一个有效的文档。

  • RFC 标准 defining MIME types仅明确定义 text/plain , 虽然 RFC Content-Type header spec引用文献 text/html .这显然没有提供明确的指导,也没有定义可能的替代方案。

鉴于来自 W3 的唯一相关引用指出完整的 XML 文档和片段被视为相同(并且 HTML 是 XML 的子集),W3 片段解析算法没有区别(并假设它正在接收 HTML),MDN 建议反对使用任何替代 header ,并且没有广泛接受的(甚至没有任何值得注意的)替代品,使用 text/html对于文档片段将是明确的选择。我找不到任何其他建议的先例,并且使用某些自定义 MIME 类型可能只会引起混淆(或更糟)。

如果您真的想在您的应用程序中区分完整文档和片段,您可以将其包装在 JSON 中,或者从您的服务器发送一个额外的自定义 header (我找不到任何关于此的常见做法的引用,并且可能会让其他开发者感到困惑)。

关于html - HTML 片段的内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19303361/

相关文章:

javascript - 添加了一个 props onPress,因为我正在调用事件handleEvent。但方法内没有打印任何内容

html - IE 8/9 中的元素未按预期换行

php - 发出初始 ajax 请求后,Ajax 请求无法发送 - 试图找出导致冲突的原因

javascript - jQuery Mobile 对话框不会出现在 AJAX 请求上

http - 带有 golang 后端的 CORS 请求不起作用

ios - 志愿者匹配 API Objective-C

基于 CSS 的移动主题 - JQM 样式 "linked lists"不使用完整的 JQM 框架

java - Swing HTML 呈现显示非常大的项目符号点

php - 如何在文件上传和插入数据库时​​包含加载 gif

java - Jsoup 没有下载整个页面