XMLHttpRequest身份验证在Firefox中不起作用

时间:2012-02-27 01:32:16

标签: javascript firefox authentication xmlhttprequest

我正在尝试使用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(属于与网站相同域名的绝对网址)

知道我可能做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试首先发送包含您知道无效的凭据的请求:

var xhr = new XMLHttpRequest();
xhr.open("POST", [relative path], false, "username_you_know_is_wrong", "any_string");
xhr.send(dataText);

然后运行上面的代码块。