【发布时间】:2012-03-22 10:12:16
【问题描述】:
我正在开发一个自制 API 的消费者,并且在设置 Authorization 标头时遇到了严重的困难。我正在使用 JQuery 处理 Ajax 请求,但 'beforeSend' 根本不起作用(使用 fiddler 来检查请求)
这是我的 beforeSend 代码:
$.ajax({
type: "GET",
url: url+"/Projects",
contentType: "application/json; charset=utf-8",
beforeSend: function (req) {
req.setRequestHeader("Authorization", AuthBuilder(username, password));
},
success: function (result) {
alert("success");
},
error: function (xhr, ajaxOptions, thrownError) {
alert("fail");
}
});
如果失败了,你会怎么做?回到发送 ajax 请求的旧方式......好吧,这也不起作用......
这是我的常规代码:
function GET(address, callback, error) {
Request = getXMLHttpObject();
Request.open("GET", url + address, true);
var base64 = Base64.encode(username + ":" + password);
alert(base64);
Request.setRequestHeader("Authorization", "Basic " + base64);
Request.send();
Request.onreadystatechange = function () {
//alert(Request.readyState+" code "+Request.status);
if (Request.readyState == 4 && Request.status == 200) {
callback(jQuery.parseJSON(Request.responseText));
} else if (Request.readyState == 4 && Request.status >= 400) {
error(Request.status, Request.statusText);
}
}
}
不要介意我没有专门要求 json,因为服务按默认返回 json。
在附加信息中:
- 产地无所谓,服务允许所有产地(已测试确认)
- 授权在由标头设置时有效(在其他客户端测试)
- 只是没有发送授权标头
- AuthBuilder(username, password)) 给出了基本 Auth 标头内容的正确格式
- getXMLHttpObject() 只是一些复制粘贴代码,之前可以使用
有什么想法吗?
【问题讨论】:
标签: javascript jquery ajax header authorization