Управление доступом для перекрестного сайта запрашивает в Internet Explorer

Я пытаюсь выполнить вызов Ajax от нескольких доменов до единственного, который обработает запрос. Домен Enabling Cross в Firefox и Chrome был легок путем установки заголовка на сервере обработки:

header("Access-Control-Allow-Origin: *");

Но это не помогает включению его в Internet Explorer. Когда я пробую:

httpreq.send('');

это останавливается с ошибочным Доступом запрещен.

Как это может быть включено в Internet Explorer?

9
задан Aleksandar Janković 11 January 2010 в 20:29
поделиться

3 ответа

Я не верю, что ты можешь сделать это прямо в Internet Explorer. У вас есть пара вариантов:

  • Установить скрипт переадресации прокси на контролируемом вами сервере, который может переадресовывать запросы Ajax. Убедитесь, что он переадресовывает только на те направления, которые вам нужны, чтобы не превратиться в анонимную пересылку.

  • Используйте трюк document.domain . В основном, вам нужно создать набор iframes, по одному для каждого сервера, на который вам нужно сделать вызов Ajax. Внутри каждого трюка iframe установите свойство document.domain, чтобы оно точно совпадало с доменом, на который вам нужно отправить Ajax-запросы на . Что касается заполнения необходимых данных, используйте манипуляцию DOM перед установкой document.domain. Обратите внимание, что этот трюк требует, чтобы целевые серверы находились в субдоменах оригинала. Больше в этой статье , с примерами.

5
ответ дан 4 December 2019 в 07:47
поделиться

Для Internet Explorer 8 вам нужно сделать то же самое, что и для FF3, т.е. использовать заголовок «Access-Control-Allow-Origin» плюс использовать объект XDomainRequest вместо XMLHttpRequest. Все подробно объяснено здесь для IE8: http://msdn.microsoft.com/en-us/library/dd573303%28VS.85%29.aspx

Старые версии IE не поддерживают Cross Site Контроль доступа и объекты XDomainRequest. Однако это еще не все, вы можете, например, прибегнуть к уловке IFrame, то есть создать невидимый IFrame, который вызывает ваши функции, как описано здесь: http: / /softwareas.com/cross-domain-communication-with-iframes

1
ответ дан 4 December 2019 в 07:47
поделиться

Просто добавив к ответу Эрика, для более старой версии IE вы можете использовать метод $ .ajax Jquery 1.4.2, который по умолчанию разрешает междоменные запросы, или для междоменного JSON вы можете использовать

jQuery .getJSON (строковый URL, данные карты, обратный вызов функции) возвращает XMLHttpRequest

отрывок из документов JQuery.

«jQuery теперь поддерживает JSONP изначально - если вы попытаетесь загрузить JSON (через $ .getJSON или $ .ajax) с удаленного URL-адреса, сервер будет интерпретировать дополнительный обратный вызов».

0
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: