Доступ JavaScript из родительского домена в поддомен? - PullRequest
16 голосов
/ 08 июня 2011

Я прочитал, что настройка document.domain = "example.com" позволяет мне получить доступ к родительскому домену с субдомена.

Будет ли то же самое работать наоборот?

Допустим, мой основной сайт работаетв http://example.com. Все функции API, к которым я хочу получить доступ через AJAX (GET & POST), размещены на http://api.example.com.

Смогу ли я получить доступ к api.example.com из example.com?

РЕДАКТИРОВАТЬ : Глядя на document.domain еще раз, я не думаю, что это решит проблему.В результате вызовов api .example.com необязательный HTML, но вывод из скрипта PHP, работающего на сервере API.Это может быть JSON, простой текст и т. Д., Поэтому для этого нет способа установить document.domain (поскольку это не iframe).

1 Ответ

7 голосов
/ 08 июня 2011

Вам нужно установить document.domain на ОБАХ страницах

Можно также установить заголовки CORS на вашем сервере:

http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/

Краткий обзор CORS

Firefox 3.5 и Safari 4 реализуют Спецификация CORS, используя XMLHttpRequest как «контейнер API» который отправляет и получает соответствующие заголовки от имени веб-разработчик, что позволяет межсайтовые запросы. IE8 реализует часть спецификации CORS, используя XDomainRequest как похожий «API» контейнер »для CORS, что позволяет простой межсайтовые запросы GET и POST. Примечательно, что эти браузеры отправляют Заголовок ORIGIN, который обеспечивает схема (http: // или https://) и домен страницы, которая делает межсайтовый запрос. Разработчики серверов должны убедиться, что они отправляют правые заголовки назад, особенно Заголовок Access-Control-Allow-Origin для ПРОИСХОЖДЕНИЕ, о котором идет речь (или «*» для все домены, если ресурс общедоступный).

Стандарт CORS работает путем добавления новых Заголовки HTTP, которые позволяют серверам обслуживать ресурсы разрешенного происхождения домены. Браузеры поддерживают эти заголовки и применять ограничения они устанавливают. Дополнительно для HTTP методы запроса, которые могут вызвать побочные эффекты на данные пользователя (в в частности, для методов HTTP другой чем GET, или для использования POST с определенные типы MIME), спецификация требует, чтобы браузеры «предполетно» запрос, запрашивая поддерживаемые методы с сервера с опциями HTTP заголовок запроса, а затем, по «Одобрение» с сервера, отправка фактический запрос с фактическим Метод HTTP-запроса. Серверы также могут уведомить клиентов, есть ли «учетные данные» (включая файлы cookie и HTTP Данные аутентификации) должны быть отправлены с просьбами.

...