Как включить междоменный запрос на сервере? - PullRequest
20 голосов
/ 29 июля 2011

У меня есть файл json, размещенный на моем сервере. Когда я пытаюсь сделать AJAX-запрос «GET» к файлу json, он не работает.

См. Консоль в Safari, там написано "Не удалось загрузить ресурс".

Firebug показывает «200 OK», но ответ не отображается. Даже Firebug не показывает вкладку JSON.

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

Я хотел бы знать, как я могу преодолеть это? Кроме того, если я хочу разрешить междоменные запросы на моем сервере, я считаю, что нужно создать файл crossdomain.xml или что-то еще. Я не уверен, но это то, что я знаю. Я искал в Google, но не смог найти соответствующие ссылки.

Любая помощь в этом высоко ценится.

Спасибо.

UPDATE: Я не использую какой-либо серверный язык сценариев (PHP, ASP.NET и т. Д.). Я использую обычный HTML и JavaScript / jQuery.

UPDATE-2:

Я использовал следующий код для междоменных запросов:

<script src="jquery-1.6.2.js"></script>
  <script>
  $(document).ready(function () {
    $.ajax({
      dataType: 'jsonp',
      data: '',
      jsonp: 'jsonp_callback',
      url: 'http://myhosting.net/myjsonfile.json',
      success: function (jsonData) {
        alert("success")
        alert(jsonData);
      },
      error: function(errorObj) {
        alert(errorObj.statusText);

      },
    });
});

Когда я вижу на вкладке "Net" в Firebug, я вижу вкладку JSON и вижу ответ json. Однако обработчик обратного вызова «success» не вызывается, но вызывается обработчик обратного вызова «error», и я получаю предупреждение, говорящее parseerror.

Есть идеи, что может быть не так?

Ответы [ 3 ]

39 голосов
/ 29 июля 2011
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com

на целевом сервере

в php:

 header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");

если вы не хотите использовать язык сценариев сервера: поместите это в (linux) консоль

a2enmod headers

и к вашему файлу .htaccess добавьте

Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
6 голосов
/ 07 марта 2014

Поместите это в ваш .htaccess , и обычный ajax работает

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>
3 голосов
/ 26 июля 2012

решение, данное genesis, сработало для меня, однако мне пришлось опустить косую черту в URL.т.е.:

header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...