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