Доступ к элементам iframe в разных доменах
Я понимаю, что межсайтовый скриптинг (xss) не очень хорош и не поддерживается в большинстве браузеров. Тем не менее, я создаю страницу, которую будут использовать только 3 или 4 человека в моей компании. На этой странице у меня есть фрейм из другого домена, и мне нужна родительская страница, чтобы иметь возможность доступа к значениям в этом фрейме.
Итак, мой вопрос: есть ли способ (изменение настроек и т. Д.) В Firefox или IE7, чтобы это произошло? Предпочтительно (хотя и не обязательно) любое изменение настроек было бы явно для моего домена.
В Интернете я нашел некоторую справку, в которой говорится, что в FF вы можете добавить, чтобы разрешить это. Мне не повезло, хотя, возможно, это не поддерживается в FF3.
3 ответа
Для тех, кто ищет, есть отличный обратно-совместимый, только для JavaScript способ общения между доменами. Короткий и простой код. Идеальное решение? Пока у вас есть запрос на изменение родительского и дочернего элементов:
http://www.onlineaspect.com/2010/01/15/backwards-compatible-postmessage/
Другой вариант - настроить прокси-страницу так, чтобы страницы появлялись в одном домене. Прокси-страницы могут быть ужасно уязвимы для XSS, в зависимости от реализации. Даже если вы заявляете, что это не является проблемой, важно учитывать это.
Пара идей макушки моей головы:
В IE вы можете изменить параметры зоны безопасности, в которой находится ваш сайт. Я предлагаю вам добавить домены в "Доверенные сайты", а затем убедиться, что "Доступ к источникам данных через домены" включен для зоны Доверенные сайты. Вы можете найти больше информации здесь.
Если у вас есть доменное имя, которое вы контролируете, может быть, вы можете настроить субдомены, которые указывают на сайты в разных фреймах? Тем самым обманывает веб-браузер, что они являются частью одного и того же сайта?
Если вам нравится кодирование, вы можете создать собственное приложение, которое использует элемент управления IE-браузера и реализует собственный IInternetSecurityManager ( http://msdn.microsoft.com/en-us/library/ms537130(VS.85).aspx), который позволяет междоменный доступ к скриптам.