У меня есть некоторый Ajax-код, который работает в Safari, Chrome и Firefox, но не в IE9.
Страница находится на http://foo.com/test.aspx
, и она отправляет запрос AJAX веб-службе, размещенной на https://service.foo.com
.Я думал, что у меня не будет каких-либо междоменных проблем, но, учитывая, что IE9 блокирует его, похоже, что я делаю: (
var tempUrl = "https://service.foo.com/dummy.svc/test?hi=bye";
$.get(tempUrl, "html");
Как я уже говорил, код работает в других 3 браузерах, но только неIE9. (Меня интересует только IE9, а не IE8 или старше).
Я немного покопался и нашел эту статью на MSDN, которая гласит:
Для междоменных запросов требуется взаимное согласие между веб-страницей и сервером. Вы можете инициировать междоменный запрос на своей веб-странице, создав объект XDomainRequest вне оконного объекта и открыв соединение с конкретным доменом. Браузер запроситданные с сервера домена, отправив заголовок Origin со значением источника. Соединение будет завершено, только если сервер ответит заголовком Access-Control-Allow-Origin либо *, либо точным URL-адресом запрашивающей страницы.Поведение является частью проекта структуры рабочей группы по веб-приложениям Консорциума Всемирной паутины (W3C) по перекрестному домену на стороне клиента.В сообщении, с которым интегрируется объект XDomainRequest.
Прежде чем идти по пути использования XDR, я хотел бы проверить с людьми, умнее меня, правильный ли это подход или нет.
- Добавить
Response.AddHeader("Access-Control-Allow-Origin", "*");
на мою страницу - Создать код условия jscript, который обнаруживает IE9 и использует XDR вместо обычного вызова jquery, который я использую с
$.get
.
Я полностью выключен или это правильный путь?
(Предполагая, что это правильный путь, куда идет заголовок ответа Acecss-Control-Allow-Origin
-на моей странице в http://foo.com/test.aspx или на веб-сервисе в https://service.foo.com?)