写 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里面,选择你的站点,双击“请求筛选”
后“编辑功能设置”,勾选“允许双重转义”保存,重启站点即可!