Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   HTML/DHTML/CSS/JS/VB (http://www.flasher.ru/forum/forumdisplay.php?f=66)
-   -   AJAX + HTTP BASIC AUTH (http://www.flasher.ru/forum/showthread.php?t=106939)

igor82 22.01.2008 12:01

AJAX + HTTP BASIC AUTH
 
Друзья всех приветствую. Не имел ли то-нибудь дело с авторизацией HTTP BASIC AUTH посредством AJAX (XMLHttpRequest). Проблема в том, что не удается добиться корректную работу данного метода в Opera 9xx.
В отличие от IE и FIREFOX, даже если логин и пароль правильные, опера всегда выводит стандартное окно для ввода логина и пароля.
Вот код который я использую. Возможно существуют другие методики или пути, которые работают корректно?

Код HTML:

function getHTTPObject() { // Создаем XMLHttpRequest объект
    if (typeof XMLHttpRequest != 'undefined') {
        return new XMLHttpRequest();
    }
    try {
        return new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            return new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }
    return false;
}

// Отправляем данные для авторизации
function js_otp_auth()
{
 
    var http = getHTTPObject();

    var username = top.document.getElementById('user_id').value;
    var password = top.document.getElementById('otp_password').value;


    http.open("get", '/wps/themes/html/apache_redir.html', false, username, password);

    http.send("");
    if (http.status == 200) {
        return true;
    } else {
        return false;
    }
    return false;
}

Заранее всем спасибо!!

KidsKilla 22.01.2008 15:30

статус присваивается не сразу. например:
Код:

http.onreadystatechange = function(){
    // только при состоянии "complete"
    if (this.readyState == 4) {
        // для статуса "OK"
        if (this.status == 200) {
            // здесь идут всякие штуки с полученным ответом
        } else {
            alert("Не удалось получить данные:\n" +
                this.statusText);
        }
    }
}

http://ru.wikipedia.org/wiki/XMLHttpRequest

igor82 22.01.2008 16:45

Спасибо. А как всетаки с оперой быть?

KidsKilla 22.01.2008 17:50

ответ выше. если у вас просто опера не проходит аутентификацию, проверьте все возможные заголовки на UTF-8

igor82 22.01.2008 17:58

Проверял заголовки. В опере до версии 9.24 почему то просто отсекался заголовок 'Authorization' т.е броузер его просто не слал серверу и все. Затем скачал 9.24. Там ситуация выправилась и заголовок уже отсылался серверу. Но попрежнему вылетает окно для ввода логина и пароля. Такое ощущение что опера шлет корректные заголовки НО НЕ ПРИНИМАЕТ куку от сервера.

KidsKilla 22.01.2008 18:04

Ошибки в коде я указал. Возможную причину тоже.
(Однако, то что сервер принимает правильно утф-8, как я понял, так никто и не проверял)
В отсутствии остальной конкретики и в виду того что с телепатией у меня плохо, ничем не могу помочь.

igor82 22.01.2008 20:48

Ок спасибо. Я все более детально проверю и вернусь тогда.
Еще раз спасибо что откликнулись

igor82 24.01.2008 15:45

Итак. В коде нет никакой ошибки ибо скрипт работает в синхронном режиме, что определяется соответсвующим параметром в методе open. Заголовки Выводил в браузере и на сервере тоже в файл запысывал (JS обращался к PHP скрипту а тот в свою очередь заголовки которые браузер передавал серверу писал в файл), все в норме вроде.


Часовой пояс GMT +4, время: 16:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.