content-type:text/json和application/json之间的确切区别是什么?

Gir*_*ish 46 content-type header http

两者之间的确切区别是什么?

  1. 内容类型:text/json
  2. 内容类型:application/json

我一直在随机使用它们,从来没有在两个http标头中找到任何输出差异?

Arj*_*jit 48

application/json:json的官方MIME类型

text/x-json:在application/json正式注册之前,json的实验(非官方)MIME类型

  • 哦,请“ MIME类型”和“媒体类型”已经互换使用了20年。类似Unix的系统仍然几乎都具有/etc/mime.types文件,请允许我向您保证,该文件并非专门用于mailcap。 (3认同)

Ian*_*oyd 20

根据 Content-Type 的定义

七个标准初始预定义内容类型中的两个是:

  • text: 文字信息。主要子类型“纯文本”表示纯文本(无格式)。No special software is required to get the full meaning of the text,除了支持指定的字符集之外。子类型用于应用软件可以增强文本外观的形式的丰富文本,但不一定需要此类软件才能获得内容的总体概念。因此,可能的子类型包括任何可读的字处理器格式。本文档中定义了一个非常简单且可移植的子类型 Richtext。
  • application:一些其他类型的数据typically either uninterpreted binary data或由基于邮件的应用程序处理的信息。主要子类型“八位字节流”用于未解释的二进制数据的情况,在这种情况下,最简单的推荐操作是为用户将信息写入文件。定义了两个附加子类型“ODA”和“PostScript”,用于在正文中传输 ODA 和 PostScript 文档。“应用程序”的其他预期用途包括电子表格、基于邮件的调度系统的数据以及“活动”(计算)电子邮件的语言。

(强调我的)

换句话说:

  • text如果它是可读文本(JSON
  • application如果它是不可读的二进制数据(JSON不是

理想情况下是这样text/json,但道格拉斯·克罗克福德 (Douglas Crockford) 注册了application/json

使用此媒体类型的应用程序:JSON 已用于在使用所有这些编程语言编写的应用程序之间交换数据:ActionScript、C、C#、Clojure、ColdFusion、Common Lisp、E、Erlang、Go、Java、JavaScript、Lua、Objective CAML、Perl、PHP、Python、Rebol、Ruby、Scala 和 Scheme。

那么为什么他将其注册在正确的位置application而不是正确的位置呢text

本来 text/json。在他2006 年 1 月的第一次选秀中:

5. IANA 考虑因素

JSON 文本的 MIME 媒体类型是text /json。

在他的第一次第二次第三次修订中,它仍然是text/json

但在 2006 年 2 月的第四次修订中,他将其更改为application/json(有拼写错误):

6. IANA 考虑因素

JSON 文本的 MIME 媒体类型是application /json。

类型名称: 子类型名称:text
json

当它于 2006 年 7 月被接受为完整的 RFC时,所有文本错误都消失了:

6. IANA 考虑因素

JSON 文本的 MIME 媒体类型是 application/json。

类型名称:application
子类型名称:json

显然,从 更改text/json为 的原因application/json是 IANA 更有可能分发“application/*而不是text/*指派”。

  • 我同意“text/json”是更合乎逻辑(最不令人惊讶)的选择。我在研究“text/json”不是注册的 MIME 类型的原因时找到了这个答案,因此感谢您提供历史背景。 (4认同)