uploadify圖片上傳控制元件在ie下報http406問題

weixin_34321977發表於2016-07-27

     前端使用uploadify圖片上傳控制元件,後端使用spring mvc框架,ajax上傳圖片在ie瀏覽下報http406錯誤,如圖1:


2587879-75944eff6cacba09.png
圖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:

2587879-7e2f21ab15cba504.png
圖2:accpet資料型別列舉類

繼續debug發現ajax請求,返回結果轉化為前臺所需json資料時,spring mvc框架會根據返回結果選擇可客戶端所接受的型別,AbstractMessageConverterMethodProcessor.java部分原始碼如下:

2587879-42499052504e69bd.png
判定客戶端所能接受資料型別

例如:註解為@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;

2587879-6460ed3e06973e45.png
spring mvc bean配置

2、設定reponse head accept 為“application/json”,使用處理流方式實現json輸出;

2587879-72f7618a2bf385e0.png

第一次寫部落格,你的點贊是我最大的支援!本文為作者原創,轉載請標明出處:http://www.jianshu.com/p/688ac5ad2764

相關文章