Кросс доменный Аякс
Вы когда нибудь пытались делать Ajax запрос на сервер с другим доменом? Я - да. Не получается. Из соображений безопасности, Аякс запросы работают только если домен сайта на котором находится юзер совпадает с доменом сервера, куда сделан запрос. Можно поспорить, что это совсем не улучшает безопасность, но не в этом дело. Кросс-доменные запросы иногда нужны и сейчас я покажу как их делать.
Можно написать весь код самому и использовать Cross-Domain Proxy Pattern. Но есть способ попроще. Thierry Schellenbach написал плагин к джаваскрипт библиотеке Prototype и теперь можно сделать кросс-сайтовый запрос за пару минут. Для этого нужно:
- скачать Prototype 1.5.0 (я не стал проверять более новые версии)
- скачать transport.js
Подгружаем скрипты:
-
<script type="text/javascript" src="http://www.foobar.com/prototype.js">
-
<script type="text/javascript" src="http://www.foobar.com/transport.js">
Теперь используем прототайповский класс Ajax, к которому добавились некоторые функции:
-
new Ajax.Request('http://www.other-domain.com/',
-
{
-
method: 'GET',
-
crossSite: true,
-
parameters: Form.serialize(obj),
-
onLoading: function()
-
{
-
-
},
-
onSuccess: function(transport)
-
{
-
-
},
-
onFailure: function(transport)
-
{
-
-
}
-
});
Обратите внимание на crossSite: true. Этот параметр активирует кросс-доменные возможности. Ну и стандартные callbacks:
- onLoading: тут можно показывать индикатор загрузки.
- onSuccess: тут можно показать юзеру результат запроса.
- onFailure: а тут можно вывести сообщение на экран в случае ошибки.
3 Comments so far
Leave a reply
Вы до конца статью не дочитали: This plugin uses the dynamic script tag technique
То есть он вставляет (динамически) JavaScript с другого сайта. Увы, это очень много где не работает. И с безопасностью очевидны проблемы
Я в курсе, что он вставляет джаваскрипт. Ничего в этом плохого нет.
А где это не работает?
и ничего не работает …