我正在尝试访问具有 Windows身份验证的网络服务。我基本上使用了this页面上写的大部分内容:
$.ajax({
url: url,
method: 'GET',
async: true,
data: {},
dataType: 'json',
crossDomain: true,
xhrFields: {
withCredentials: true
},
beforeSend: function(xhr) {
// set authorization header
xhr.setRequestHeader("Authorization", "Basic " + Base64.encode(username + ":" + password));
},
success: function(data){
// success
},
error: function(request, status, error) {
// handle problem
}
});
我还在.plist文件中定义了外部主机。我的问题是我总是收到错误。为了使它变得更糟,错误函数没有任何结果,这有点有用(这个输出来自Firefox,简化):
Object { readyState=0, status=0, statusText="error"}
我也尝试过模拟器,但不是立即给我错误,我认为它超时了。我所看到的以及我正在使用的是使用基本身份验证的请求。那么有没有办法使用 Windows身份验证?
实际实现这一点答案 0 :(得分:1)
最后我做了什么:
$.ajax( {
url:webServiceLink,
method: "GET",
timeout:30000,
data: "{}",
dataType: "xml",
beforeSend : function(req) {
req.setRequestHeader("Authorization",
make_base_auth (username,password));
},
success: OnGetMemberSuccess,
error: OnGetMemberError
});
});
在我推出的外部主机中: * 。
更新1.0:再次停止工作......
更新2.0 发现问题:
base 64编码接受以下字符:
_keyStr:" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + / =",
如果您使用其他内容输入登录名/密码,则会出现问题。 :)
答案 1 :(得分:0)
您可能需要查看Access-Control-Allow-Headers