我正在尝试使用XMLHttpRequest发送经过身份验证的(基本身份验证)POST请求。它适用于chrome和IE,但Firefox会系统地返回错误401,要求提供登录凭据。当我输入它们时,请求正常。此外,我还使用相同的身份验证执行GET请求,并且它们适用于所有浏览器(包括Firefox)。 我使用的是JQuery 1.7,但我也尝试过没有它的相同结果。 这是我使用的代码:
$.ajax({
url: [relative path],
type: "POST",
username: user_id,
password: token,
data : dataText,
success: function(data){
if(data == null) alert('Error: could not send message');
else
handleUpdate(data);
}
});
或没有JQuery:
var xhr = new XMLHttpRequest();
xhr.open("POST", [relative path], false, user_id, token);
xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
console.log(xhr.responseText);
}
}
xhr.send(dataText);
在这两种情况下,Firebug都会显示以下形式的请求: http://user:password@absolute_url(属于与网站相同域名的绝对网址)
知道我可能做错了什么?
谢谢!
答案 0 :(得分:2)
尝试首先发送包含您知道无效的凭据的请求:
var xhr = new XMLHttpRequest();
xhr.open("POST", [relative path], false, "username_you_know_is_wrong", "any_string");
xhr.send(dataText);
然后运行上面的代码块。