我正尝试使用XMLHttpRequest(firefox)在服务器上允许的不同身份验证方案向Microsoft服务器发出SOAP请求。使用Windows身份验证的XMLHttpRequest SOAP请求
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', url, true);
xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
xmlhttp.setRequestHeader("Connection", "keep-alive");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
}
}
xmlhttp.send(soapRequest);
在这种情况下,一切都按预期工作。当我运行这个代码时,我会得到提示输入用户名和密码,输入凭据后我会从服务器获得响应。这适用于Basic,Digest和Windows身份验证。
但我不希望得到提示credetntials所以我改变了第二行
xmlhttp.open('POST', url, true, username, password);
现在,这仅适用于基本和摘要式身份验证,而不是Windows验证(NTLM)。我将从服务器获得401响应,在使用此身份验证方法时很好,但不会发生进一步的通信。
我也尝试添加域到“network.automatic-ntlm-auth.trusted-uris”首选项,但它没有帮助。
服务器的全面回应:
Cache-Control private
Content-Length 0
Date Fri, 07 Jul 2017 16:48:22 GMT
Server Microsoft-IIS/7.5
WWW-Authenticate Negotiate
NTLM
X-AspNet-Version 2.0.50727
X-Powered-By ASP.NET