Метод сообщения XMLHttpRequest Формирует диалог входа в систему (проблема IE) - PullRequest
1 голос
/ 27 мая 2010

Мы используем Windows IIS 6 и используем его собственную возможность защиты файлов с помощью аутентификации Windows в качестве метода входа в систему.

Работает нормально, за исключением того, что когда я пытаюсь опубликовать метод XMLHttpRequest из IE, я снова получаю диалоговое окно входа в систему, что приводит к сбою запроса. Странно то, что Mozilla и Safari работают хорошо.

Могу ли я что-то сделать с заголовками или сделать так, чтобы IIS распознал это как тот же сеанс, а не предлагал повторный вход в систему?

function ajaxQuery(method, url, params, asynchronous, readyFunction, is_done) {
    if (asynchronous == null) {
        asynchronous = true;
    }
    //alert("URL: "+url);
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            readyFunction(xmlhttp.responseText);
            if (is_done) {
                is_done("ok");
            }
        }
    }
    if (method.toLowerCase() == "get") {
        url += "?" + params;
        params = null;
    }
    debug = url;
    xmlhttp.open(method, url, asynchronous);
    if (method.toLowerCase() == "post") {
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", params.length);
        xmlhttp.setRequestHeader("Connection", "close");
        debug = params.length;
    }
    xmlhttp.send(params);
}

1 Ответ

0 голосов
/ 29 июля 2010

Проверьте возвращаемые заголовки ответа. У нас была та же проблема с приложением, которое (намеренно) возвращало код 401. IIS перехватил этот код и добавил заголовок WWW-Authenticate, который заставляет IE отображать логин. Мы смогли это исправить, вернув вместо этого 403.

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