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

    Недавно столкнулся с проблемой как передать данные с сервера A в
    javascript на сервер B, если на сервере B серверный код писать нельзя,
    а на А можно.
    И нашел элегантное решение.
    Суть решения в том, что для использования предлагается объект
    CSSHttpRequest, предоставляющий выполнять AJAX-запросы на базе CSS. Это
    работает, поскольку CSS не имеет ограничений безопасности, которые имеет
    стандартный объект XMLHttpRequest.
    В отличие от JSONP имеет ограничение только на GET-запросы. Также есть некоторые проблемы совместимости с браузерами
    Код выглядит следующим образом.
    CSSHttpRequest.get(<br> "http://www.nb.io/hacks/csshttprequest/hello-world/",<br> function(response) { alert(response); }<br> );

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

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

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

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 14

      +4
      Данное решение совместимо с IE6+, Firefox 2+, Safari 3+, iPhone.

      Да, iPhone — отличный браузер! :)
        0
        Попробовал использовать и получил ошибку:
        Unsafe Javascript attempt to access frame with URL about:blank from frame with URL file:///D:/Fedor/ajaxcss/index.html. Domains, protocols and ports must match.

        Естественно, ничего не получилось (пробовал в Chrome 5).

        Возможно, дело в том, что скрипт использует: iframe.contentWindow.document, а это уже кросс-домен. Так что ничего не выходит.
          0
          В Firefox тоже тишина.
            –1
            какая версия?
              0
              3.5.8, заработало только в Safari
            –1
            читайте внимательно Данное решение совместимо с IE6+, Firefox 2+, Safari 3+, iPhone.
            я тестировал в Firefox. у меня все работало
              +1
              вот работающий пример izhjob.ru/ya_widget.xhtml
              проверьте, работает ли у вас
                0
                Да, заработал. Почему то пример с сайта не работает.
                0
                Тестируйте не на file:///, а на http://

                Из-за стандартных ограничений на file:/// может быть косяк.
                  0
                  Запускать нужно на хосте, а не в локальной файловой системе.
                  +1
                  а чем это лучше чем jsonp? или это просто ради фана?
                    0
                    насчет jsonp не знал. видимо это другое решение
                    –3
                    господа, кто мне минусы ставит и за что?
                      +1
                      Лопатой гвозди

                      Only users with full accounts can post comments. Log in, please.