понедельник, 30 мая 2011 г.

Кроссдоменный AJAX на основе CSS

Недавно столкнулся с проблемой как передать данные с сервера A в
javascript на сервер B, если на сервере B серверный код писать нельзя,
а на А можно.
И нашел элегантное решение.
Суть решения в том, что для использования предлагается объект
CSSHttpRequest, предоставляющий выполнять AJAX-запросы на базе CSS. Это
работает, поскольку CSS не имеет ограничений безопасности, которые имеет
стандартный объект XMLHttpRequest.
Код выглядит следующим образом.

CSSHttpRequest.get(
 'http://www.nb.io/hacks/csshttprequest/hello-world/',
 function(response) { alert(response); }
 );

Данные кодируются на сервере в виде 2-х килобайтных цепочек. Ответ
возвращается в в виде:
#c0 { background: url(data:,Hello%20World!); }
 #c1 { background: url(data:,I’m%20text%20encoded%20in%20CSS!); }
 #c2 { background: url(data:,I%20like%20arts%20and%20crafts.); }

На сервере B с помощью javascript создается невидимый IFRAME, в который
и загружается CSS.
Это также работает и в XHTML.

Данное решение совместимо с IE6+, Firefox 2+, Safari 3+, iPhone.
Вид лицензии: Apache License

(Via Хабрахабр:.)

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

Отправить комментарий