Можно ли использовать XDomainRequest для работы с SSL?
У меня есть код, который использует объект Microsoft XDomainRequest в IE8. Код выглядит следующим образом:
var url = "http://<host>/api/acquire?<query string>";
var xdr = new XDomainRequest();
xdr.onload = function(){
$.("#identifier").text(xdr.responseText);
};
xdr.open("GET", url);
xdr.send();
Когда схема в "url" "http://", команда работает нормально. Однако, когда схема "https://" IE8 дает мне ошибку "Доступ запрещен" JavaScript. Обе схемы отлично работают в FF 3.6.3, где я, конечно же, использую XmlHttpRequest. В обоих браузерах я соблюдаю W3C Access Control. "http://" работает с перекрестным представлением для обоих браузеров. Таким образом, проблема связана с IE8, XDomainRequest и SSL.
Сертификат SSL не является проблемой. Если я набираю https:// <host
> /в адресную строку IE8, где <host
> то же, что и в "url" выше, страница загружается штрафом.
Итак, у нас есть следующее:
- https://<host
> /прямо из браузера отлично работает;
- https:// <host
> /api/приобретать? <query string
> через XDomainRequest не разрешено.
Можно ли это сделать? Я что-то оставляю?
Ответы
Ответ 1
По-видимому, ответ здесь: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
Пункт 7 на этой странице говорит: "Запросы должны быть нацелены на ту же схему, что и на странице хостинга".
Вот некоторые вспомогательные тексты для точки 7:
"Мы определенно стремились предотвратить использование HTTPS-страниц XDomainRequests для HTTP-ресурсов, так как этот сценарий представляет собой Смешанная угроза безопасности контента, которую многие разработчики и большинство пользователей делают не понимаю.
Однако это ограничение слишком велико, поскольку оно предотвращает HTTP страниц от выпуска XDomainRequests, предназначенных для HTTPS-страниц. Хотя его true, что сама страница HTTP могла быть скомпрометирована, нет причина, по которой должно быть запрещено получать государственные ресурсы надежно".
В настоящее время представляется, что ответ на мой первоначальный вопрос: ДА, если страница хостинга может использовать схему "https://"; НЕТ, если он не может.