我正在尝试调用Web服务,但是我收到了身份验证错误。这是一个交叉来源请求。我已经设置了' withcredentials'用于管理跨源请求的属性。但我仍然得到同样的错误。
SOAPClient._loadWsdl = function(url, method, parameters, async, callback)
{
var wsdl = SOAPClient_cacheWsdl[url];
if (wsdl + "" != "" && wsdl + "" != "undefined")
return SOAPClient._sendSoapRequest(url, method, parameters, async, callback, wsdl);
var xmlHttp = SOAPClient._getXmlHttp();
if (SOAPClient.username && SOAPClient.password) {
xmlHttp.open("GET", url + "?wsdl", async, SOAPClient.username, SOAPClient.password);
var auth = "Basic " + SOAPClient._toBase64(SOAPClient.username + ":" + SOAPClient.password);
xmlHttp.withCredentials = true;
//xmlHttp.setRequestHeader( 'Access-Control-Allow-Origin', 'www.website.com');
xmlHttp.setRequestHeader('Authorization', auth);
} else {
xmlHttp.open("GET", url + "?wsdl", async);
}
if (async) {
xmlHttp.onreadystatechange = function() {
alert(xmlHttp.readyState);
if (xmlHttp.readyState == 4)
SOAPClient._onLoadWsdl(url, method, parameters, async, callback, xmlHttp);
}
}
xmlHttp.send(null);
if (!async) `enter code here`
return SOAPClient._onLoadWsdl(url, method, parameters, async, callback, xmlHttp);
}
答案 0 :(得分:0)
我怀疑这是由于浏览器的限制导致您无法执行CORS请求。必须在远程服务器上设置标题以允许此标题,并且听起来您无法控制它。
在页面的域中创建一个服务器代理,该代理可以从其他域获取所需的结果,并从允许的域中转发给您。
您可能希望发布WDSL服务器的URL以查看其他人是否可以使用它。
P.S。
&& wsdl + "" != "undefined")
这永远不会评估为undefined,因为你总是连接一个空字符串。