使用MIME类型application / json会导致什么问题?

时间:2011-01-25 10:20:49

标签: javascript json cross-browser content-type mime-types

我正在处理一个需要返回JSON数据的Web服务。 I read that I should use application/json但不确定这可能导致什么问题?

例如,旧版浏览器是否支持它? (IE6 +,FF,Opera等)

或者公司防火墙/代理服务器后面的用户是否可能阻止mime类型的应用程序/ json?

如果有任何问题,您有什么问题可以遵循这个建议吗?

3 个答案:

答案 0 :(得分:3)

让我们考虑一下IE。假设您有一个隐藏的iFrame,您可以使用它来请求文件下载。例如

<iframe src="getFile?id=123">

现在,服务器可能会发送JSON编码的错误消息,如

{
    error: 'File 123 does not exist',
    retryLater: false
}

如果该错误消息以application/json形式发送,则会出现下载对话框,因为JSON文本被误认为是实际文件。

另一方面,MIME类型text/plain将导致消息在iFrame中呈现,您可以将其提取出来,并使用JScript将其转换为花哨的弹出窗口。


(编辑)

真实世界的例子:EXTJS Fileupload - Problem with IE8 security bar

答案 1 :(得分:1)

之前已经讨论过:

What is the correct JSON content type?

任何阻止MIME类型的防火墙都会导致任何AJAX风格的网络应用程序出现问题,所以我真的不用担心。

答案 2 :(得分:1)

我自己与IE8进行了长时间的斗争,我发现如果你将json加载到iframe作为text / plain,IE8会将它包装在一个标签中。如果您随后使用innerHTML获取内容并尝试将其解析为json,那么它将失败。

我最终不得不将内容发送为text / html,这似乎完全错误,但在IE中运行并且似乎没有让其他浏览器更加现代化的AJAX处理。