Кросс-доменные запросы AJAX

jQuery, cross-domain AJAX requests | 10/2013

Введение

Политика броузеров: кросс-доменные соединения запрещены. Если мы попробуем отправить запрос на другой домен, то получаем ошибку безопасности. Разрешено посылать запросы только к своему домену. Скрипт загруженый с одного домена не может производить какие-либо манипуляции с другим доменом. Браузер изолирует контент из разных источников для их защиты от изменения. Как же быть в случае когда нужно получать данные из других доменов?

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

В сети можно найти разные советы

  • Использовать страницу, которая обращается к серверу в своем домене и сервер в своем домене, который являет своеобразным прокси к необходимым сторонним серверам (server-side proxy)
  • Использовать фреймы для создания на странице областей, в которые будет загружаться сторонний контент средствами GET запроса. Но после загрузки во фрейм этот контент так же станет объектом ограничения.
  • Динамическая вставка элемента script в страницу. Этот скрипт загружается с другого домена и содержит в себе все нужные данные.
  • В библиотеке jQuery с версии 1.5 появилась возможность организовать JSONP (JSON Padding) (расширение JSON)
  • Решения на базе технологии flash
  • PostMessage – это новая возможность стандарта HTML5, позволяет отсылать сообщения из одного окна в другое, при этом контент окон может быть с разных доменов.

Результат

Есть достаточно простой способ разрешить кросс-доменные соединения.
CORS - MLHTTPRequest 2 - это новая спецификация запросов.
Все что для этого нужно - доработать серверный скрипт.
Необходимо чтобы в заголовке возвращаемом сервером присутствовала строка
"Access-Control-Allow-Origin: * "

Пример ответа сервера:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Type: text/html; charset=utf-8

Добавляем в начало PHP скрипта следующую строчку:

   header('Access-Control-Allow-Origin: *');

Такая строка открывает возможность запросов из любых доменов.


См.также по теме:

 


Категории: Сеть и настройки, PHP

Выполнение работ

Обучение

  • индивидуальное
  • групповое
  • разработка документации
  • инфографика

 

Программирование
  • конструкторские задачи
  • 2D-3D CAD-системы
  • технологическое ПО
  • задачи в архитектуре, машиностроении, геодезии
  • скрипты и макросы AutoCAD
  • автоматизация офисной работы
  • скрипты и макросы Word, Excel, Visio, ...
  • интранет
  • административные скрипты
  • конвертация документов разных форматов, парсеры