Позвоните нам
8 800 555-23-46
звонок по Роcсии бесплатный
+7 (495) 580 30 45 Москва
+7 (8442) 73 50 76 Волгоград
+ 7 (917) 338 51 54
Все контакты и офисы
Напишите нам: info@onvolga.ru

Спросить онлайн

Реализация кроссдоменных запросов в js

В целях безопасности XMLHttpRequest разрешено делать только в рамках текущего сайта, запрещено использовать другой домен, порт либо протокол. В настоящее время современный XMLHttpRequest предусматривает кросс-доменные запросы, однако не всеми браузерами поддерживается данная возможность. Для обхода данной проблемы существует несколько библиотек, среди которых jsonp, и easyXDM. В данной статье рассмотрим подробней использование easyXDM.

Из официальной документации easyXDM:

easyXDM предоставляет транспортный стек, способный передавать строковые сообщение между двумя окнами, клиентом (основной документ) и провайдером (документ включен используя iframe). В easyXDM реализовано несколько методов, и он всегда выбирает наиболее эффективный для текущего браузера. Для всех реализаций транспортный стек предоставляет двунаправленность, надежность, очевидность и проверку отправителя.

В ie6 и ie7 используется Microsoft Security Bulletin MS11-018, отправка реализуется через flash транспорт. Для IE8+, Firefox 3+, Safari 4+, Chrome 2+, Opera 9+ используется отправка через PostMessageTransport. Для Firefox версии ниже 3 используется FrameElementTransport.

Рассмотрим пример использования данной библиотеки. Для использования на стороне клиента нам необходим файл easyXDM.js, а на стороне получателя сообщений расположим всю библиотеку. Создадим экземпляр easyXDM:
var rpc = new easyXDM.Rpc(
{remote: origin + provider},
{remote: {request: {}}}
);

В переменных origin и provider зададим путь к домену с которым устанавливаем общением и провайдеру xdm.
var origin = 'http://domain.local';
var provider = '/easyXDM/provider/index.html';

Соответственно по пути 'http://domain.local/easyXDM/provider/index.html', должен располагаться файл провайдера easyXDM.

Далее можем описать запрос к нашему стороннему домену.
rpc.request({
url: origin + '/generateWidgetData/' + user_id + '?url=' + encodeURI(window.location.href),
method: 'GET'
}, function (response) {
//todo do something
});

В свойстве url, задаём путь кросс доменного запроса, а переменной response будет находиться ответ сервера.
Вот таким простым способом можно наладить общение двух сторонних доменов. Кросс доменные запросы чаще всего используются для создания различных виджетов на сайте клиента или сбора статистики.

 Ваш запрос или вопрос по теме:

Интернет-агентство сегодня:

ТОП20 веб-студий России по разработке интернет-магазинов по доступной цене в рейтинге CMSMagazine, 1 место в ЮФО и ТОП10 Центрального ФО.

ТОП100 веб-студий Партнеров Битрикса по созданию интернет-магазинов и 11 место среди разработчиков интернет-магазинов на Битриксе по низким ценам в рейтинге РейтингРунета-2016.

ТОП10 разработчиков интернет-магазинов Москвы по доступной цене в рейтинге РейтингРунета.

ТОП120 SEO-компаний России, специализирующихся на поисковом продвижении интернет-магазинов по версии РейтингРунета.

Золотой Сертифицированный Партнер 1С-Битрикс.

Государственная аккредитация в области информационных технологий (№5291 Министерства связи РФ).

ПОЛУЧИТЕ БЕСПЛАТНУЮ КОНСУЛЬТАЦИЮ или ОТПРАВЬТЕ ЗАПРОС

Задайте вопрос о веб-разработке, обслуживании или продвижении сайта или отправьте запрос по работам. Мы стараемся отвечать на Ваши запросы в течение 24 часов.