Кроссдоменный обмен: анонимайзер + фрейм

в 10:39, , рубрики: javascript, Веб-разработка, Песочница, метки: ,

Поскольку для проектов на коленках или оказания безвозмездной помощи душит жаба по написанию и использованию собственного прокси (требует денег и времени), — есть идея замены прокси существующими анонимайзерами.
=======================================================================================
Идея позволяет: читать-писать контент и message на выбранном сайте,
производить авторизацию, ставить и исполнять скрипты.

=======================================================================================

image

=======================================================================================
Суть идеи такова:
Все документы, подключенные через анонимайзер, — работают на одном домене.
Кроссдоменный обмен осуществляется с помощью фрейма с переключаемыми вкладками, в котором находятся два документа-копии с текущего top.document. Первый, — с тем же адресом, что и top.document, второй расположен на домене с анонимайзером.
Вкладки с документами обмениваются меж собой через window.name. В итоге, через данный фрейм осуществляется взаимодействия документов на домене с анонимайзером и документов на домене top.document.

Начальная установка:
1. Скрипт для установки обмена один, первично расположен на главном документе, состоит из трех частей, работающих в соответствующих 'document-N'.
Нужная часть срабатывает по анализу соответствующего ключа "key" в текущем адресе документа.
Прим. Для 'addr0', используемого во фрейм-адресах, при наличии у top.document первоначального хеш(#...), — хеш удаляем;

2. Первоначально скрипт ставит фрейм frame0 с адресом anonimaiser+addr0+"#"+"key,"+addr1,
где:
addr0 — адрес текущей страницы без хеша;
key — ключ — признак, необходимый для подключения и работы нужной части скрипта к соответствующему документу.
addr1 — адрес запрашиваемой страницы;

3. Часть скрипта работающего во фрейме frame0 ставит внутри себя фреймы: frame2 и frame1,
frame2 — ставится первым.
frame1 — ставится с первичным адресом anonimaiser+addr0+"#"+«key2»;

4. document-2 во фрейме frame1 переключается на document-3 с адресом addr0+"#"+«key3»;

5. По onload document-3 — запускаем callback функцию на document-0 об окончании установки фреймов.
Важно: После окончания установки и запуска возможно добавлением новых адресов одновременной связи простым добавлением во frame0 — «еще один фрейм — еще один адрес»
И возможность организовать на клиенте сложносочиненный коммутируемый обмен меж этими сайтами.
========================================================

Обмен данными:
image
1. Обмен между документами: document-3 и document-0 лучше производить через LocalStorage, — это позволит продолжить сессию «кроссдоменного-обмена» после -закрытия/открытия/смены вкладки top.document.

2 Jumping tabs in frame: Для организации обмена, вкладки с document-2 и document-3 переключаются туда-сюда. Обмен данными между вкладками frame1 производится через window.name.

3. Обмен между document-2 и document-4 лучше производить через функцию родительского frame0 function preset. Данная функция выполняет предустановки для окна document-4 по onload при динамической смене адреса addr1, а так же выполняет функции синхронизации связи при запросе с document-4 на document-2 при включенной текущей вкладке document-3.
=========================================

Дополнение1:
Для ускорения загрузки фреймов: (document-1,document-2,document-3), сам скрипт ставим как можно ближе к началу страницы. При наличии в текущем адресе вышеперечисленных ключей (key, key2, key3) в конце скрипта, работающего на данном документе выполняем:
document.write('<style>body{display:none}</style><plaintext>'),
чем обрезаем излишний контент страницы во фреймах.
=================================================================

Вопросы:

хм… а что postMessage/XMLHttpRequest2/XDomainRequest отменили?
просто не понимаю зачем это, и где это использовать, в каких случаях.

Ответ:

1. Устанавливаем соединения с ресурсами, без установленных на них скриптов и Access-Control-Allow-Origin. (к примеру можно искать картинки в гуглокартинках

2. Cложнокоммутируемый обмен на клиенте между несколькими фреймами с произвольными сайтами.
Данные сайты могут не иметь никакой специальной поддержки для организации обмена.

Автор: Defff

Источник

Поделиться

* - обязательные к заполнению поля