Обойти ту же проблему политики происхождения - PullRequest
2 голосов
/ 15 июля 2009

У меня проблема с тем, что у меня есть набор фреймов, состоящий из родительского фрейма, загруженного из одного домена, и отдельного фрейма из другого домена. Содержащийся домен также устанавливает cookie перед загрузкой набора фреймов. Однако из-за политики «тот же orgin», которая применяется большинством браузеров, содержащийся фрейм не будет передавать куки, если он не из того же домена, что и родительский.

К сожалению, у меня нет контроля над родительским фреймом (или его URL), и URL-адрес для содержащегося фрейма фактически статичен. Таким образом, единственный способ передать информацию на содержащийся сайт - это файлы cookie.

Единственное решение, которое я нашел, - перезагрузить содержащийся домен в родительском фрейме, но это сводит на нет некоторые преимущества использования фреймов.

Кто-нибудь лучше обойти эту проблему?

Ответы [ 4 ]

2 голосов
/ 26 мая 2010

Существует несколько способов обойти Политика одинакового происхождения , которая не позволяет вашим фрейм-фреймам разговаривать друг с другом. Если вы управляете обоими серверами, вы можете использовать файл crossdomain.xml Flash . Если вы не контролируете один из серверов или хотите использовать JavaScript, вы вынуждены использовать «междоменный прокси», такой как этот, для java или python или php .

Межсайтовый XHR - еще один вариант, но он поддерживается не всеми браузерами.

1 голос
/ 07 ноября 2012

Еще одна мысль к этому, где вы можете использовать API междоменного обмена сообщениями для отправки сообщений из одного кадра в другой. Вот пример ! Подробнее о этом .

1 голос
/ 15 июля 2009

Существует также правильный способ сделать это в HTML 5 с postMessage. Смотрите здесь: http://ajaxian.com/archives/cross-window-messaging-with-html-5-postmessage

1 голос
/ 15 июля 2009

Есть много способов сделать это.Вот два, которые я использовал:

  1. Пусть родитель и потомок загрузят скрипт из общего источника, используя тег.Скрипты, загруженные таким образом, не имеют проблем с тем же источником, и возвращаемые ими данные становятся частью объекта документа и могут взаимодействовать с другими скриптами, загруженными документом (так работает AJAST).
  2. Создайте обратный прокси в родительском домене и загрузите фрейм через этот прокси.В браузере кажется, что они оба обслуживаются из одного домена.Недостатком является то, что это может повлиять на кэширование и обойти любую сеть доставки контента (например, Akamai), которую вы можете использовать.
...