У меня есть код, который использует объект XDomainRequest Microsoft в 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. "http://" работает перекрестный источник на оба браузера. Таким образом, проблема с IE8, XDomainRequest и SSL.
Сертификат SSL не является проблемой. Если я ввожу https://<host
> / в строку поиска IE8, где <host
> совпадает с в "URL" выше, прекрасные загрузки страницы.
Таким образом, у нас есть следующее:
- удар https://<host
> / непосредственно от браузера хорошо работает;
- удар https://<host
>/api/acquire?<query string
> через XDomainRequest не позволяется.
Это может быть сделано? Я пропускаю что-то?
По-видимому, ответ здесь: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
Пункт 7 на этой странице гласит: "Запросы должны быть направлены на ту же схему, что и страница хостинга."
Вот часть вспомогательного текста для пункта 7:
"Мы определенно хотели предотвратить создание HTTPS-страниц, делающих XDomainRequests для HTTP-ресурсов. XDomainRequests для ресурсов на базе HTTP, поскольку такой сценарий представляет собой Угроза безопасности смешанного содержимого, которую многие разработчики и большинство пользователей не понимают.
Однако, это ограничение является слишком широким, поскольку оно не позволяет HTTP-страницам выдавать XDomainRequests для HTTP-ресурсов. страницам выдавать XDomainRequests, направленные на HTTPS страницы. Хотя это правда, что сама HTTP-страница может быть скомпрометирована, нет никаких причины, по которой ей должно быть запрещено получать публичные ресурсы безопасно."
В настоящее время кажется, что ответ на мой первоначальный вопрос таков: ДА, если страница хостинга может использовать схему "https://"; НЕТ, если не может.