IE系列浏览器把application/json响应视为文件,并尝试下载。
我的解决办法是修改把MIME Type修改为text/plain,这样所有的浏览器都能正确处理。
下面详细地说说原因以及其他的解决方法。
原因:
查阅msdn文档,了解到IE支持的MIME Type不包括application/json,这就说明了IE遇到application/json响应就会询问用户是否下载。
其他的解决方法:
1.判断请求头的User-Agent是否包含IE的关键字,包含IE的关键字则返回IE支持的MIME Type,比如text/plain。
2.检查请求头的accept是否包含application/json,如果不包含则返回text/plain。
3.设置框架(Spring、Struts)配置文件的响应MIME Type。
补充:
外国程序员通过修改注册表让自家的IE浏览器支持application/json
参考资料:
http://blog.keremyilmaz.com/ie-doesnt-like-application-json-content-type/
http://blog.degree.no/2012/09/jquery-json-ie8ie9-treats-response-as-downloadable-file/
http://stackoverflow.com/questions/8892819/ie8-treats-json-response-as-file-and-tries-to-download-it
http://incomplete-code.blogspot.be/2012/08/spring-mvc-internet-explorer-7-and-json.html