Когда я пытаюсь отправить 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;
}
Спасибо, Кеннет





Вы случайно не запрашиваете URL-адрес, отличный от HTTPS, на странице HTTPS? Появляются ли какие-либо сообщения в журнале ошибок / консоли?
Попробуйте разместить закрытие после открытия:
// 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), я всегда прикрепляется после открытия.
Явное использование HTTPS в качестве URL-адреса также не работает. В консоли ошибок Firefox нет сообщений об ошибках.