1. 程式人生 > >IE11 400錯誤,谷歌、火狐、edge正常顯示

IE11 400錯誤,谷歌、火狐、edge正常顯示

今天發現個問題,做的專案在谷歌、火狐、edge上正常顯示及跳轉,但IE11上就會報下面幾個錯:

1:400錯誤

2:HTML5 DOCTYPE 無效 <!DOCTYPE >錯誤

3:dom-DOM7011:禁用了反向和正向快取

搜尋了這3個錯誤,發現2.3都不符合我的報錯原因,

然後參考《Ie瀏覽器請求400錯誤,谷歌火狐等瀏覽器正常請求》https://blog.csdn.net/guanfengliang1988/article/details/73321358/這篇帖子,對專案進行修改,解決了問題。

此處引用原文:

location.href="請求的url"在其它瀏覽器上是可以正常請求的.但是在ie瀏覽器上確出現奇怪的http請求400錯誤,我們先來對於http400狀態的描述:當用戶在開啟網頁時,返回給使用者介面帶有400提示符的頁面。其含義是你訪問的頁面域名不存在或者請求錯誤,自己的本地,肯定沒問題.那就是請求錯誤了.幾經嘗試發現是引數帶中文的會出現此種情況,沒帶中文的沒有問題.

解決方法:

      1.js編碼encodeURI(encodeURI(URL)),編碼兩次
      2.伺服器端解碼 URLDecoder.decode(request.getParameter("para"),"UTF-8")

在我的JS裡,只將會出現中文的引數,進行了編碼:

window.location.href
    = "index?code="+Id+"&name="+encodeURI(encodeURI(name))+"&begDate="+begDate+"&endDate="+endDate;
controller層:
@RequestMapping("/index")
public ModelAndView index(HttpServletRequest request,HttpServletResponse response) {
  String name = request.getParameter("name");
  if (null != name){
    try {
        name = URLDecoder.decode(request.getParameter("name"),"UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
  }
}
name傳參在位址列顯示的是加密過的:%25E6%2596%25B0%25E7%2596%2586%25E5%2585%25AC%25E5%258F%25B8 如這段,經過URLDecoder.decode解密,可得中文引數

 
--------------------- 
作者:tornado430 
來源:CSDN 
原文:https://blog.csdn.net/tornado430/article/details/82706374 
版權宣告:本文為博主原創文章,轉載請附上博文連結!