3

我正在尝试访问具有Windows 身份验证的网络服务。我基本上使用了这个页面上写的大部分内容:

$.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"}

我也在模拟器上试过,但不是立即给我错误,而是我认为它超时了。我所看到的以及我正在使用的是使用Basic authentication的请求。那么有没有办法使用Windows 身份验证来实际实现这一点?

4

2 回答 2

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+/=",

如果您将登录名/密码与其他内容一起使用,则会遇到问题。:)

于 2012-06-25T09:02:14.013 回答
0

可能你应该看看Access-Control-Allow-Headers

于 2012-06-25T07:39:26.033 回答