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

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

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

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


当前回答

JSON的正确内容类型是应用程序/json UnLESS, 您正在使用JSONP, 也称为JSON with Padding, 实际上是 JavaScript, 所以正确的内容类型将是应用程序/javascript。

其他回答

NANA将JSON的正式MIME类型登记为申请/json。

当被问及为什么不是文本/json时,Crockford似乎说JSON其实不是JSON的JavaScript,也不是文本,而且IANA比文本/*更可能发出申请/*。

更多资源:

媒体类型 要求征求第4627条评论:JSON有一个类型

贾森:

根据在 URL 中传递的查询参数, 回复是动态生成的数据 。

示例:

{ "Name": "Foo", "Id": 1234, "Rank": 7 }

内容类型:申请/json


JSON -P: 贾森 -P:

JSON用垫子。回应是 JSON数据, 并有一个功能电话围绕它。

示例:

functionCall({"Name": "Foo", "Id": 1234, "Rank": 7});

内容-类型:申请/标注

毫无疑问,申请/json是JSON答复的最佳MIME类型。

但我有一些经验,因为某些压缩问题,我不得不使用应用程序/ X- javascript。我的主机环境与 GoDdddy 共享。 它们不允许我更改服务器配置。 我在我的 Web. config 文件中添加了以下代码, 用于压缩响应 。

<httpCompression>
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
        <add mimeType="text/*" enabled="true"/>
        <add mimeType="message/*" enabled="true"/>
        <add mimeType="application/javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
    </staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>

通过使用这个, . aspx 页面被压缩为 g- zip, 但 JSON 没有回应 。 我添加了 。

<add mimeType="application/json" enabled="true"/>

但这并不压缩JSON的反应。

在那之后,我删除了这个新添加的类型,并添加了

<add mimeType="application/x-javascript" enabled="true"/>

在静态和动态两种类型的章节中都采用静态和动态两种类型,并更改了

.ashx (非同步处理器) to

application/x-javascript

现在我发现我的JSON反应 压缩了G-zip。所以我个人建议使用

application/x-javascript

只有在您想要压缩您的 JSON 对共享主机环境的反应时。 因为共享主机不允许您更改 IIS 配置 。

作为一些研究,

最常见的MIME类型是

申请/日文

让我们举个例子来区分杰森和爪哇史克里普特

申请/日文

当不知道该数据将如何使用时,即使用该数据。当信息仅以 JSON 格式从服务器中提取时,它可以通过链接或任何文件(如果是的话)来使用。

比如说...

<?php

    header('Content-type:application/json');

    $directory = [
            ['Id' => 1, 'Name' => 'this'],
            ['Id' => 2, 'Name' => 'is'],
            ['Id' => 3, 'Name' => 'Stack Overflow'],
        ];

    // Showing the JSON data

    echo json_encode($directory);
?>

产出是,

[{"Id":1, "Name":"this"}, {"Id":2, "Name":"is"}, {"Id":3, "Name":"Stack Overflow"}]

申请/标注

在预先界定数据使用时使用,在客户端 Ajax 应用程序调用时使用,在JSON-P型或JSONP型数据时使用。

例如,例如

<?php

    header('Content-type:application/javascript');

    $dir = [
            ['Id' => 1, 'Name' => 'this' ],
            ['Id' => 2, 'Name' => 'is'],
            ['Id' => 3, 'Name' => 'Stack Overflow'],
    ];

    echo "Function_call(" . json_encode($dir) . ");";
?>

产出是,

Function_call([{"Id":1, "Name":"this"}, {"Id":2, "Name":"is"}, {"Id":3, "Name":"Stack Overflow"}])

对于其他MIME类型,请参看MIME类型的完整细节(IANA媒体类型)。

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

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