我一直在弄乱JSON一段时间,只是将其作为文本推出,并没有伤害任何人(据我所知),但是我想正确地开始做事。 我已经看到许多所谓的JSON内容类型的“标准”: 应用程序/ json 应用程序/ x-javascript 文字/ javascript 文字/ x-javascript 文字/ x-json 但是,哪一个是正确的,还是最好的?我发现在它们之间存在安全性和浏览器支持问题。 我知道还有一个类似的问题,如果REST API返回JSON,则为哪种MIME类型?但是我想要一个更有针对性的答案。
1个 2 下一个 对于JSON文本: 应用程序/ json JSON文本的MIME媒体类型为application / json。默认编码为UTF-8。 (来源:RFC 4627)。 对于带回调的JSONP(可运行的JavaScript): 应用程序/ javascript 以下是相关评论中提到的一些博客文章: 为什么不应该将text / html用于JSON Internet Explorer有时与application / json有关 相当完整的Mimetype列表及其用途 来自@gnrfan的IANA上的官方MIME类型列表 | IANA已将JSON的官方MIME类型注册为application / json。 当被问及为什么不是text / json时,Crockford似乎说JSON并不是JavaScript也不是文本,而且IANA比text / *更可能分发application / *。 更多资源: 媒体类型 请求评论4627 bluesmoon:JSON具有一种类型 | 对于JSON: 内容类型:application / json 对于JSON-P: 内容类型:应用程序/ JavaScript | 当然,JSON的正确MIME媒体类型是application / json,但是有必要了解应用程序中期望的数据类型。 例如,我使用Ext GWT,并且服务器响应必须为text / html,但包含JSON数据。 客户端,Ext GWT表单侦听器 uploadForm.getForm()。addListener(new FormListenerAdapter() { @Override 公共无效onActionFailed(表单,int httpStatus,字符串responseText) { MessageBox.alert(“ Error”); } @Override 公共无效onActionComplete(表单,int httpStatus,字符串responseText) { MessageBox.alert(“成功”); } }); 如果使用application / json响应类型,浏览器建议我保存文件。 使用Spring MVC的服务器端源代码片段 返回新的AbstractUrlBasedView() { @SuppressWarnings(“未选中”) @Override 受保护的void renderMergedOutputModel(地图模型,HttpServletRequest请求, HttpServletResponse响应)引发异常 { response.setContentType(“ text / html”); response.getWriter()。write(json); } }; | JSON: 响应是根据URL中传递的查询参数动态生成的数据。 例: {“ Name”:“ Foo”,“ Id”:1234,“ Rank”:7} 内容类型:application / json JSON-P: 带有填充的JSON。 响应是JSON数据,并带有包装的函数调用。 例: functionCall({“ Name”:“ Foo”,“ Id”:1234,“ Rank”:7})); 内容类型:应用程序/ JavaScript | 如果您使用的是Ubuntu或Debian,并且通过Apache提供.json文件,则可能需要提供具有正确内容类型的文件。我这样做主要是因为我想使用Firefox扩展JSONView Apache模块mod_mime将帮助您轻松完成此任务。但是,对于Ubuntu,您需要编辑/etc/mime.types文件并添加以下行 application / json json 然后重新启动Apache: sudo服务apache2重新启动 | 如果要从客户端调用ASP.NET Web服务,则必须使用application / json使其正常工作。我相信这对于jQuery和Ext框架是相同的。 | JSON的正确内容类型是application / json,除非您使用的是JSONP,也称为JSON with Padding,它实际上是JavaScript,因此正确的内容类型将是application / javascript。 | 毫无疑问,application / json是JSON响应的最佳MIME类型。 但是由于一些压缩问题,我有一些必须使用application / x-javascript的经验。我的托管环境是与GoDaddy共享的托管。它们不允许我更改服务器配置。我已将以下代码添加到我的web.config文件中以压缩响应。<方案名称=“ gzip” dll =“%Windir%\ system32 \ inetsrv \ gzip.dll” /> dynamicTypes> staticTypes> httpCompression> 通过使用此选项,.aspx页使用g-zip压缩,但JSON响应未压缩。我加了 在静态和动态类型部分中。但这根本不会压缩JSON响应。 之后,我删除了这个新添加的类型并添加了 在静态和动态类型部分中,并更改了响应类型 .ashx(异步处理程序) 应用程序/ x-javascript 现在,我发现我的JSON响应已使用g-zip压缩。所以我个人建议使用 应用程序/ x-javascript 仅当您要在共享托管环境上压缩JSON响应时。因为在共享主机中,它们不允许您更改IIS配置。 | 仅当使用application / json作为MIME类型时,我才具有以下内容(截至2011年11月,使用最新版本的Chrome,带有Firebug的Firefox): 从服务器加载JSON后,Chrome将不再发出警告。 Firebug将在响应中添加一个标签,向您显示JSON数据 格式化。如果MIME类型不同,它将显示为 “响应内容”。 | 并非所有内容都适用于内容类型application / json。 如果您使用Ext JS表单提交来上传文件,请注意浏览器会解析服务器响应以创建