这两个HTTP头部字段的确切区别是什么?Content-type: text/json 和 Content-type: application/json 我随意使用它们,却从未在输出中发现任何差异。
application/json
:json的官方MIME类型。
text/x-json
:在application/json
正式注册之前,json的实验性(非官方)MIME类型。
文本
:文字信息。主要的子类型“plain”表示纯文本(无格式)。除了支持指定字符集外,不需要特殊软件来获取文本的完整含义。子类型用于丰富文本形式,在应用软件中可能通过提升文本的外观来增强,但是获取内容的基本概念不需要依赖该软件。可能的子类型包括任何可读的文字处理器格式。这个文档中定义了一个非常简单和便携的子类型richtext。应用程序
:其他类型的数据,通常是未解释的二进制数据或者将由基于邮件的应用程序处理的信息。主要的子类型“octet-stream”用于未解释的二进制数据,此时最简单的推荐操作是为用户提供将信息写入文件的选项。另外两个子类型“ODA”和“PostScript”被定义用于在正文中传输ODA和PostScript文档。"application"的其他预期使用包括电子表格、邮件调度系统的数据和用于“活动”(计算)电子邮件的编程语言。(我加粗的部分)
换句话说:
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
。
application/json
(有拼写错误):text/json
到application/json
的更改原因是因为IANA更有可能分配一个application/*
而不是text/*
的任务。text/json
是更合理和少有出其不意的选择。我在研究为什么 text/json
不是已注册的 MIME 类型时发现了这个答案,感谢您提供历史背景。 - Anthony Geoghegan