Javascript HTTP请求身份验证错误

时间:2017-02-03 10:46:35

标签: javascript authentication

我正在尝试调用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);

}

1 个答案:

答案 0 :(得分:0)

我怀疑这是由于浏览器的限制导致您无法执行CORS请求。必须在远程服务器上设置标题以允许此标题,并且听起来您无法控制它。

在页面的域中创建一个服务器代理,该代理可以从其他域获取所需的结果,并从允许的域中转发给您。

您可能希望发布WDSL服务器的URL以查看其他人是否可以使用它。

P.S。

 && wsdl + "" != "undefined")

这永远不会评估为undefined,因为你总是连接一个空字符串。

相关问题