ie8下js提交get请求遇到拒绝访问的问题

来源:互联网 发布:matlab 图片矩阵 编辑:程序博客网 时间:2024/06/15 19:40

ie8下js提交get请求遇到拒绝访问的问题

Js用Ajax提交get请求时,在Ie8下遇到拒绝访问的问题,有人说这是跨域引起的,可以设置Ie的安全性来避免这个问题,具体如下:

IE工具->internet选项->安全->自定义级别->通过域访问数据源,改成启用,就可以发送请求获取数据了,不知道这对跨域的安全性有什么影响没,但在ff和chrome下是可以直接发送和获取数据的,具体如下:

var myText;
var text = "";

function request(url, params) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
readyStateChanged(xhr);
}
var result = url;
for (var i in params) {
result = addURLParam(result, i, params[i]);
}
console.log(result);
xhr.open("get", result, true);
xhr.send(null);
}

function readyStateChanged(xhr) {
console.log("xhr readyState: " + xhr.readyState);
console.log(xhr.responseText)
if(typeof myText == "undefined") {
myText = document.getElementById("myText");
}
console.log("status=" + xhr.status);
if (xhr.readyState == 4) {
if ((xhr.status >= 200 && xhr.status < 300) || (xhr.status == 304)) {
//console.log(xhr.responseText);
text += xhr.responseText;
}
else {
console.log("Request was unsuccessfull: status=" + xhr.status + ", url=" + url);
text += "Request was unsuccessfull: status=" + xhr.status + ", url=" + url;
}
myText.innerHTML = text;
}
}

function addURLParam(url, name, value) {
url += (url.indexOf("?") == -1) ? "?" : "&";
url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
return url;
}
调用方法如下:
var params = new Object();
var url = "...";
params.type= 0;
params.id= 0;
request(url, params);
后来才发现,在ie下不能用XMLHttpRequest,而是要改用XDomainRequest类,修改如下:
function ieRequest(url, params) {
var xdr = new XDomainRequest();
xdr.onload = function() {
//readyStateChanged(xdr);
console.log(xdr.responseText);
}
var result = url;
for (var i in params) {
result = addURLParam(result, i, params[i]);
}
console.log(result);
xdr.open("get", result);
xdr.send(null);
}
修改后再将上面的通过域访问数据源改成禁止访问,这样就可以发送和接受get请求了。
要吐血了,web前端真不是人干的事情
阅读全文
0 0