【发布时间】:2014-08-21 22:53:35
【问题描述】:
我需要使用应该在 Internet Explorer 中工作的 Javascript 发出一个发布请求。客户端和服务器位于不同的服务器上并使用不同的协议。
我尝试了两种不同的方法
1)
var xdr = new XDomainRequest();
var user = document.getElementById('username').value;
var psw = document.getElementById('password').value;
var params = "username="+user+"&password="+psw+"&system=telenetweb";
xdr.open("post", url);
xdr.onprogress = function () {
//Progress
};
xdr.ontimeout = function () {
//Timeout
};
xdr.onerror = function () {
//Error Occured
};
xdr.onload = function() {
//success(xdr.responseText);
}
setTimeout(function () {
xdr.send(params);
}, 0);
但它不起作用,因为我正在从 http 向 https 发出请求。
2)
var http;
try {
http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
http = false;
}
}
if (!http && typeof XMLHttpRequest!='undefined') {
http = new XMLHttpRequest();
}
var user = document.getElementById('username').value;
var psw = document.getElementById('password').value;
var params = "username="+user+"&password="+psw+"&system=telenetweb";
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.send(params);
这在 Chrome 中有效,但在 IE 中无效,因为 IE 不会将 Origin 标头附加到请求中。
我该如何解决这个问题?
【问题讨论】:
标签: internet-explorer cross-domain cors