Подтвердить что ты не робот

Как включить междоменный запрос на сервере?

У меня есть json файл, размещенный на моем сервере. Когда я пытаюсь выполнить запрос AJAX "GET" в json файл, он терпит неудачу.

См. консоль в Safari, в ней говорится: "Не удалось загрузить ресурс".

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

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

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

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

Спасибо.

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

ОБНОВЛЕНИЕ-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" не вызван, но обработчик обратного вызова "ошибка" вызывается, и я получаю сообщение с сообщением parseerror.

Любая идея, что может быть неправильным?

4b9b3361

Ответ 1

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

Ответ 2

Поместите это в свой .htaccess и выполните простой ajax

<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>

Ответ 3

решение, данное генерацией, работало для меня, однако мне пришлось опустить конечную косую черту на url. то есть:

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

Ответ 4

@genesis Я согласен с вашим ответом, но это необходимо, когда сервер восстанавливает объект JSON и находится в другом домене, я не думаю, что с jsonp вам нужно внести какие-либо изменения на стороне сервера. jsonp должен решить проблему CORS.