1. 程式人生 > >js XMLHttpRequest XMLHTTP 請求中URL包含中文時請求失敗解決方法

js XMLHttpRequest XMLHTTP 請求中URL包含中文時請求失敗解決方法

寫 XMLHttpRequest  XMLHTTP 請求時,遇到箇中文URL,結果請求失敗,找了好多資料,說什麼用 escape(URL)還要兩次,完全無用,更錯,仔細看看不使用escape時伺服器返回了,

HTTP 錯誤 404.11 - Not Found

請求篩選模組被配置為拒絕包含雙重轉義序列的請求。

這個錯誤,用了 escape 後直接就報非法URL了。

解讀了一下伺服器返回的這個錯誤資訊,試著解決了一下,居然就成功了。程式碼如下

function createXHR(){  
    var xhr = null;  
    try {  
        // Firefox, Opera 8.0+, Safari,IE7+  
        xhr = new XMLHttpRequest();  
    }  
    catch (e) {  
        // Internet Explorer   
        try {  
            xhr = new ActiveXObject("Msxml2.XMLHTTP");  
        }  
        catch (e) {  
            try {  
                xhr = new ActiveXObject("Microsoft.XMLHTTP");  
            }  
            catch (e) {  
                xhr = null;  
            }  
        }  
    }  
    return xhr;  
} 
var url='./upload/2018-03/房屋  11KM+490M.JPG';
var xhr = createXHR();
xhr.open('get',url, true);  
xhr.send(null);


解決方法很簡單,根本不需要什麼escape:

IIS7裡面,選擇你的站點,雙擊“請求篩選”


後“編輯功能設定”,勾選“允許雙重轉義”儲存,重啟站點即可!