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

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

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

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


当前回答

我用下面的用法

contentType: 'application/json',
data: JSON.stringify(SendData),

其他回答

只有在使用应用/json作为MIME类型时(截至2011年11月,有最新版本的Chrome、Firefox和Firebug),我才具备以下条件:

当 JSON 从服务器上装入时, Chrome 不再发出警告 。 Firebug 会在回复中添加一个标签, 显示您格式化的 JSON 数据。 如果 MIME 类型不同, 它会显示为“ 响应内容 ” 。

如果您从 JSON 的 REST API 获得数据, 您必须使用内容类型 :

JSON 数据的 JSON 数据: 内容-类型: HTML 数据的应用/json: 内容-类型: Text/html, XHTML 数据: 内容- Type: 应用程序/xhtml+xml, XML 数据: 内容- Type: Text/xml, 应用程序/xml

毫无疑问,申请/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 配置 。

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

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

内容- 类型页眉在张贴时应该设置为“ 应用程序/ json ” 。 监听请求的服务器应该包括“ 接受= 应用程序/ json ” 。 在 Spring MVC 中, 您可以这样做 :

@RequestMapping(value="location", method = RequestMethod.POST, headers = "Accept=application/json")

回复中的添加页眉 :

HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");