前端使用uploadify图片上传控件,后端使用spring mvc框架,ajax上传图片在ie浏览下报http406错误,如图1:
经本地debug调试,uploadify控件在ie浏览器下request header accept为“text/*”,而在chrome浏览器下为“*/*”;
补充下Http请求头accept属性含义:Accept代表发送端(客户端)希望接受的数据类型;查看MediaType.java可查询所有数据类型;eg:Accept ; text/html application/xhtml_xml,application/xml;text:用于标准化地表示的文本信息,文本消息可以是多种字符集或多种格式的;text/html 表示html文档;Application:用于传输应用程序数据或者二进制数据;application/xml 表示xml文档;如图2:
继续debug发现ajax请求,返回结果转化为前台所需json数据时,spring mvc框架会根据返回结果选择可客户端所接受的类型,AbstractMessageConverterMethodProcessor.java部分源码如下:
例如:注解为@ResponseBody数据返回类型为Map<String,Object>,其可接受的数据类型为application/json和application/*+,若数据返回类型为String,其可接受的数据类型为*/*;
由于uploadify控件在ie下请求request头header accpet为“text/*”,而返回类型只能接受application/json和application/*+,因此会报错,错误信息大致如下:org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
解决方案:
1、spring json解析配置supportedMediaTypes属性增加text/json;
2、设置reponse head accept 为“application/json”,使用处理流方式实现json输出;
第一次写博客,你的点赞是我最大的支持!本文为作者原创,转载请标明出处:http://www.jianshu.com/p/688ac5ad2764