Проверка подлинности XMLHttpRequest не работает в Firefox - PullRequest
2 голосов
/ 27 февраля 2012

Я пытаюсь отправить POST-запрос с проверкой подлинности (обычная проверка подлинности) с использованием XMLHttpRequest. Он работает в 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 (абсолютный URL, принадлежащий тому же домену, что и веб-сайт)

Есть идеи, что я могу делать неправильно?

Спасибо!

1 Ответ

2 голосов
/ 28 ноября 2012

Попробуйте сначала отправить запрос с учетными данными, которые, как вы знаете, являются недействительными:

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

Затем выполните приведенный выше блок кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...