Назад | Перейти на главную страницу

Как настроить сервер для совместного использования ресурсов между источниками (CORS)?

У меня есть веб-страница в моем домене (ecmazing.com), и я хотел бы иметь возможность отправлять запросы AJAX на этот URL:

http://hacheck.tel.fer.hr/xml.pl

Это сценарий Perl, расположенный в другом домене (и он возвращает XML-ответ).

«Политика одного и того же происхождения» не разрешает обмен данными Ajax с веб-страницы в моем домене.

Теперь я слышал о CORS и думаю, что это может решить мою проблему. Если я правильно понял, админ hacheck.tel.fer.hr домен должен был бы настроить веб-сервер так, чтобы запросы Ajax из моего домена (ecmazing.com) будет разрешено.

Не могли бы вы рассказать, какие конкретно действия должен будет выполнить админ? Я собираюсь связаться с ним, чтобы рассказать ему все подробности ...

Спецификация CORS находится здесь: http://www.w3.org/TR/cors/

Информация о CORS находится здесь: http://www.w3.org/wiki/CORS_Enabled

Согласно отправленной вами ссылке, он включен по умолчанию и требует изменения только файла .htaccess, предполагая, что это apache:

Чтобы открыть заголовок, вы можете добавить следующую строку внутри <Directory>, <Location>, и <Files> разделов или в файле .htaccess.

 <IfModule mod_headers.c>
   Header set Access-Control-Allow-Origin "*"
 </IfModule>

Я могу сказать, что вам как администратору лучше быть хорошо подготовленным, чтобы обосновать, почему это нельзя сделать в коде, а не на сервере, и почему я должен позволить вам это сделать.

Мы поддерживаем enable-cors.org за ответы на подобные вопросы. Если хотите поделиться новыми рецептами конфигураций, поднимите пелазу вопрос.

Возможно, вы захотите рассмотреть междоменный JSONP. Из Вики: "'JSON с заполнением' - это дополнение к базовому формату данных JSON, шаблон использования, который позволяет странице запрашивать данные с сервера в другом домене. В качестве решения этой проблемы JSONP является альтернативой более недавний метод под названием Cross-Origin Resource Sharing ».

Я без проблем начал использовать это для нескольких удаленных API, это здорово :)