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

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

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

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


当前回答

当然,对 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);
    }
};

其他回答

JSON 文本:

application/json

JSON 文本的 MIME 媒体类型是应用程序/ json。 默认编码是 UTF-8 。 (资料来源: RFC 4627)

JSONP (可运行的 JavaScript) 使用回调 :

application/javascript

以下是相关评论中提到的一些博客文章:

JSON Internet Explorer 为何不使用文本/ html 用于 JSON 的 JSON Internet Explorer 有时与应用程序/ json 有问题,

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

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

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

内容-类型:应用/json - JSON 内容-类型:应用/javascript-内容-类型:应用/x-javascript 内容-类型:应用/x-javascript - 内容-类型: JavaScript 内容-类型:文本/jawaScript :文本/javascript 但应用/json 正式注册前 JSON - JSON

给杰森:

Content-Type: application/json

JSON -P: 给JSON -P:

Content-Type: application/javascript

扩大被接受的答复, 当你使用JSON 在REST背景下...

当您代表REST的资源和收藏时,使用应用程序/x资源+json和应用程序/x收集+json是有充分论据的。

如果您决定遵循jsonapi 规范, 您应该使用已记录在案的应用程序/ vnd. api+json 。

虽然不存在普遍标准,但显然,所转让资源中增加的语义显然证明,比仅仅应用/json更明确的内容类型是合理的。

根据这一推理,其他情况可以证明更具体的内容类型是合理的。