Как заставить XMLHttpRequest работать через HTTPS в Firefox? - PullRequest
3 голосов
/ 26 сентября 2008

Когда я пытаюсь отправить HTTP-запрос GET через XMLHttpRequest, он работает по незащищенному HTTP.

Но при отправке через HTTPS разные браузеры давали разные результаты:

В Firefox 3.0.2: - Запрос GET не достигает веб-сервера.

В IE 7: - Запрос GET достиг веб-сервера.

Это как-то связано с ужесточением Firefox 3 ненадежных сертификатов? Есть ли способ обойти это?

Я уже добавил URL-адрес в качестве исключения в диспетчере сертификатов Firefox. Консоль ошибок не сообщает об ошибке. Я добавил try-catch вокруг openH) и отправки XMLHttpRequest. Исключение не выбрасывается.

Использование как абсолютного, так и относительного пути URL не работает.

Вот фрагмент кода:

    var xmlHttp;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                return false;
            }
        }
    }
    // we won't be handling any HTTP response
    xmlHttp.onreadystatechange=function()
    {
        // do nothing..
    }
    // send HTTP GET request
    try
    {
        xmlHttp.open("GET", "/[relative path to request]", true);
        xmlHttp.send(null);
    }
    catch (e)
    {
        alert('Error sending HTTP GET request!');
        return false;
    }

Спасибо, Кеннет

Ответы [ 2 ]

1 голос
/ 02 октября 2008

Попробуйте разместить закрытие после открытия:

// send HTTP GET request
try
{
    xmlHttp.open("GET", "/[relative path to request]", true);
}
catch (e)
{
    alert('Error sending HTTP GET request!');
    return false;
}
// we won't be handling any HTTP response
xmlHttp.onreadystatechange=function()
{
    // do nothing..
}

// Then send it.
xmlHttp.send(null);

Небольшое гугл нашел подтверждение: http://www.ghastlyfop.com/blog/2007/01/onreadystate-changes-in-firefox.html

Хотя в этом документе говорится о том, чтобы прикрепить функцию после .send (null), я всегда прикрепляется после открытия.

0 голосов
/ 26 сентября 2008

Случайно ли вы запрашиваете не-HTTPS URL на странице HTTPS? Появляются ли какие-либо сообщения в журнале ошибок / консоли?

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