Как заставить XMLHttpRequest работать через HTTPS в Firefox?

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

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

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

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

Связано ли это с тем, что Firefox 3 ужесточает ненадежные сертификаты? Это можно обойти?

Я уже добавил URL-адрес в качестве исключения в диспетчер сертификатов Firefox. Консоль ошибок не сообщает об ошибках. Я добавил пробную ловушку для XMLHttpRequest open () и send. Никаких исключений не создается.

Использование как абсолютного, так и относительного 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;
    }

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
13 366
2

Ответы 2

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

Явное использование HTTPS в качестве URL-адреса также не работает. В консоли ошибок Firefox нет сообщений об ошибках.

ksuralta 26.09.2008 12:07

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

// 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);

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

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

Другие вопросы по теме