Как точно соблюдается политика в отношении одного домена?

Скажем, у меня есть домен, 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. Рассматриваются два ресурса быть того же происхождения, если и только если все эти значения соответствуют то же самое.