Как именно применяется политика того же домена?

Допустим, у меня есть домен js.mydomain.com, и он указывает на какой-то IP-адрес, и какой-то другой домен, requests.mydomain.com, который указывает на другой IP-адрес. Может ли файл .js, загруженный с js.mydomain.com, отправлять Ajax-запросы к requests.mydomain.com?

Как именно современные браузеры применяют политику одного и того же домена?


person Community    schedule 30.05.2009    source источник


Ответы (2)


Короткий ответ на ваш вопрос: нет: для вызовов AJAX вы можете получить доступ только к тому же имени хоста (и порту/схеме), с которого была загружена ваша страница.

Есть несколько обходных путей: один — создать URL-адрес в foo.example.com, который действует как обратный прокси-сервер для bar.example.com. Браузеру все равно, где на самом деле выполняется запрос, если имя хоста совпадает. Если у вас уже есть интерфейсный веб-сервер Apache, это не составит труда.

Другой альтернативой является AJAST, который работает путем вставки тегов script в ваш документ. Я считаю, что именно так работают API Google.

Хорошее описание той же политики происхождения вы найдете здесь: http://code.google.com/p/browsersec/wiki/Part2

person kdgregory    schedule 30.05.2009
comment
Спасибо! Это очень помогло — AJAST выглядит отличным вариантом. - person ; 23.07.2009
comment
FWIW, IE обычно не заботится о порте. blogs.msdn.com/ ieinternals/архив/23/07/2009/ - person EricLaw; 24.07.2009
comment
Также стоит отметить, что IP-адрес вообще не имеет значения (в любом браузере) - это ТОЛЬКО протокол/схема, хост и (в некоторых случаях) порт, которые определяют источник. Это означает, что два разных источника, обслуживаемых с одного и того же IP-адреса, могут не обмениваться данными, и что один и тот же источник, обслуживаемый несколькими IP-адресами, может обмениваться данными с балансировщиком нагрузки. - person EricLaw; 24.07.2009

Это не сработает, потому что имя хоста другое. Две страницы считаются исходящими из одного источника, если они имеют одинаковый хост, протокол и порт.

Из Википедии на такая же политика происхождения:

Термин «источник» определяется с использованием имени домена, протокола прикладного уровня и (в большинстве браузеров) TCP-порта HTML-документа, в котором выполняется сценарий. Два ресурса считаются имеющими одно и то же происхождение тогда и только тогда, когда все эти значения в точности совпадают.

person Ayman Hourieh    schedule 30.05.2009