JSON 内容类型有许多“标准 ” :

application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json

我用哪一种,在哪里?我假设安全和浏览器支持问题是一个因素。

相关:如果JSON被REST API送回,什么MIME类型?


当前回答

给杰森:

Content-Type: application/json

JSON -P: 给JSON -P:

Content-Type: application/javascript

其他回答

当前的适当标准是应用程序/json。 虽然默认编码是 UTF-8, 值得一提的是, 它也可能是 UTF-16 或 UTF-32. 当 JSON 写入 UTF-16 或 UTF-32 时, 必须使用二进制内容传输编码 。

RFC 4627: JavaScript 对象标记的应用/json 介质类型(JSON)

5. 内容-传输-编码页眉字段(RRC 1341)是二进制传输编码的更多资料。

当然,对 JSON 来说正确的 MIME 媒体类型是应用程序/json, 但有必要了解在您的应用程序中需要什么样的数据。

例如,我使用Ext GWT, 服务器响应必须作为文本/ html, 但包含 JSON 数据 。

客户端, Ext GWT 窗体收听器

uploadForm.getForm().addListener(new FormListenerAdapter()
{
    @Override
    public void onActionFailed(Form form, int httpStatus, String responseText) 
    {
        MessageBox.alert("Error");
    }

    @Override
    public void onActionComplete(Form form, int httpStatus, String responseText) 
    {
        MessageBox.alert("Success");
    }
});

如果使用应用程序/json回应类型,浏览器建议我保存文件。

使用 Spring MVC 的服务器侧端源代码代码片断

return new AbstractUrlBasedView() 
{
    @SuppressWarnings("unchecked")
    @Override
    protected void renderMergedOutputModel(Map model, HttpServletRequest request,
                                           HttpServletResponse response) throws Exception 
    {
        response.setContentType("text/html");
        response.getWriter().write(json);
    }
};

你的问题的一部分 跟我有关 当我刚刚看到它。

第三方供应商正在提供一种供多个客户使用的REST服务。 它是一个直向前方的REST, 配有查询参数, 返回一个完善的JSON。 我用 PHP 和 Java 测试了它的工作原理。

我的客户端使用 Oracle Service Bus 作为他的应用程序服务器和 Internet 之间的网关。 当我使用 Oracle Service Bus 作为 OSB 服务时, 它被无效的信息格式错误崩溃。 结果发现, 返回的内容类型是文本/ html 。 OSB 将回复按此信头处理; 将文本、 XML 和 JSON 转换为文本、 XML 和 JSON 。 在此情况下, 回复是 JSonson , 但信头没有这么说 。 联系提供方时, 我收到回复 : “ 我们不会改变它, 因为不会影响其他人 ” 。

内容- 类型页眉指定内容应该是什么, 而不是实际内容。 也就是说, 在您的消费程序中, 您可以检查或忽略它, 并以任何方式处理内容 。 另一个示例是, 您可以返回 GIF 数据, 但指定内容类型为 JSON, 然后继续忽略页眉, 读取图像数据 。 这不会伤害您的程序, 但可能会伤害其他人 。

故事的道德感:好好表现。

您可能需要更经常地使用这些内容, 尽量记住这三种内容类型, 尽管有许多内容类型 :

内容-类型:申请/json 内容-类型:申请/xml 内容-类型:文本/html

如果您在客户端环境中, 调查交叉浏览器支持是强制的, 对于一个支持良好的网络应用程序来说 。

右侧的 HTTP 内容- ype 将是应用程序/ json, 其他人也已经强调过, 但有些客户对它处理不当, 这就是为什么jQuery 推荐默认文本/ html 。