SpringMVC 解決IE8瀏覽器把返回報文格式application/json當檔案下載的問題
阿新 • • 發佈:2019-02-12
解決瀏覽器相容一直是個頭疼的問題,尤其是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>()); }