Как именно применяется политика того же домена?
Допустим, у меня есть домен, js.mydomain.com
, и он указывает на какой-то IP-адрес, и на какой-то другой домен, requests.mydomain.com
, который указывает на другой IP-адрес. Может .js
файл загружен с js.mydomain.com
сделать Ajax запросы requests.mydomain.com
?
Как современные браузеры обеспечивают соблюдение политики одного домена?
2 ответа
Короткий ответ на ваш вопрос - нет: для вызовов AJAX вы можете получить доступ только к тому же имени хоста (и порту / схеме), с которого была загружена ваша страница.
Есть несколько обходных путей: один - создать URL в foo.example.com
который действует как обратный прокси для bar.example.com
, Браузеру все равно, где запрос фактически выполняется, если имя хоста совпадает. Если у вас уже есть интерфейсный веб-сервер Apache, это не будет слишком сложно.
Другой альтернативой является AJAST, который работает путем вставки тегов скрипта в ваш документ. Я считаю, что так работают API Google.
Хорошее описание той же политики происхождения вы найдете здесь: http://code.google.com/p/browsersec/wiki/Part2
Это не будет работать, потому что имя хоста другое. Считается, что две страницы имеют одинаковое происхождение, если они имеют одинаковый хост, протокол и порт.
Из Википедии о той же политике происхождения:
Термин "происхождение" определяется с использованием имени домена, протокола прикладного уровня и (в большинстве браузеров) TCP-порта документа HTML, на котором выполняется сценарий. Считается, что два ресурса имеют одинаковое происхождение, если и только если все эти значения абсолютно одинаковы.