1. 程式人生 > >SpringMVC 解決IE8瀏覽器把返回報文格式application/json當檔案下載的問題

SpringMVC 解決IE8瀏覽器把返回報文格式application/json當檔案下載的問題

解決瀏覽器相容一直是個頭疼的問題,尤其是IE瀏覽器,最近開發上傳檔案介面的時候,由於IE8及以下不相容JS上傳元件,所以採取了iframe框架,利用form表單提交,遺憾的是,返回報文格式:application/json 的返回報文被IE8當作檔案給下載了,下載了。。。當時差點沒石化。。

問題還是要解決,沒辦法,所以找了一會資料都沒碰到遇到類似問題的。唯一收穫是,有人建議把,MIME Type修改為text/plain。思路是對的。但是僅僅是改
produces = MediaType.TEXT_PLAIN_VALUE 還是會有問題的。controller方法體內會正常執行並返回,但是spring
框架就報錯了,會報406錯誤, HTTP 406: The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
後來又找了一會資料,才在:http://stackoverflow.com/questions/28828896/how-to-return-a-boolean-value-with-rest  找到正確答案。原來,使用了produces=MediaType.TEXT_PLAIN_VALUE 的方法,返回值必須是String,不能是其他任何物件或值。否則必報406.
正確的方法構造應該如下。
@RequestMapping(value = "/test", method = {RequestMethod.POST,RequestMethod.GET}, produces = MediaType.TEXT_PLAIN_VALUE)
@ResponseBody
public String test(HttpServletRequest request) {
    return JsonUtil.getJsonStr(new Response<String>());
}