Кросдоменный обмен данными

7 Окт
2011

Всем привет!
Сегодня я бы хотел рассказать вам о кросдоменной передачи данных. Когда у меня появилась необходимость передать какую-то строку с одного домена на другой я даже не мог представить себе, что в сети настолько мало информации на эту тему.
Вступление

Собственно началось все с того, что несколько месяцев назад я зарегистрировался на бесплатном хостинге. Там мне предложили зарегистрировать домен второго уровня, пообещали 100 мб на жестком диске, хорошую техподдержку (что редкость для бесплатных хостингов) и все это абсолютно бесплатно и без всякой рекламы. Но разумеется без ложки дегтя тут не обошлось, а точнее даже не ложки, а целой бочки! Собственно данный ресурс не предоставляет ни php ни sql ни остальных приятных фишек. Разумеется развернуть на данном хостинге даже персональный блог достаточно сложно. Вот тогда я и подумал, а что если мой блог и другие проекты будут лежать на моем полноценном веб сервере (который имеет реальный внешний ip) а на том хосте лишь файлик с iframe. Сказано — сделано. Но вот в чем проблема, пользователь не может узнать адрес страницы на которой он сейчас находится. В строке браузера всегда будет светится site.ru так как основной сайт грузится во фрейме. А это в свою очередь значит что он не может поделится им с другом или добавить в закладки, а это не есть хорошо.

Поиск решения

Собственно идея как должна решаться данная проблема не заставила себя долго жать.
Надо при помощь js получить url страницы загруженной во фрейме, избавиться от всего лишнего (оставить только путь), передать это главной странице, заменить адрес. Воде бы все легко и понятно, но как оказалось достаточно трудно реализуемо.
Дело в том, что политика безопасности запрещает обращаться к информации во фрейме, если она находится на другом домене. А это значит что нельзя получить url страницы простым window.location.href записать ее в переменную и получить эту переменную в главном окне, дабы продолжить с ней работать. И вот тут надо сооружать костыль.
«Костыль»

Собственно за несколько дней поисков я нашел несколько вариантов реализации данной задачи. Кто-то предлагал работать с базой данных, кто-то записывать в файл, кто-то… сейчас уже даже не вспомню.
Вообщем они мне все не очень приглянулись, и тогда я начал изобретать свой собственный костыль.
Почему-то не смог выложить js код тут, поэтому закинул его на спецальный сервер:
index.html на хостинге
Внутри каждой страницы на вашем веб сервере
Теперь давайте разберемся что да как:
Когда пользователь заходит на сайт по адресу site.ru, js в файле index.html обрабатывает запрос, узнает куда мы хотим попасть (в данном случае в крень) и грузит соответствующую страницу с сервера во фрейм.
Когда пользователь переходит на другую страницу нашему index.html отсылается адрес где сейчас находится пользователь, а он в свою очередь заносит его в хешь страницы.
Заключение

Вот так я получил полноценный веб сервер, который я могу ковырять как мне только вздумается, не вложив в это ни рубля.
Конечно, использовать такой метод для больших проектов не представляется возможным, но для домашней страницы, блога, фотогалереи, или поднятия какого-нибудь сервера вполне.
Есть несколько моментов, с которыми я еще не разобрался. Наиважнейшим из них является индексирование поисковыми системами.
Всем спасибо за внимание!
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх