Ошибка только в Chrome: XMLHttpRequest не может загрузить файл URL Нет заголовка "Access-Control-Allow-Origin" на запрошенном ресурсе

Я следую примеру книги, поэтому код очень прост.

Это код:

jQuery.get("ajax_search_results.php",
           { s:search_query },
           write_results_to_page, "html");

И код ajax_search_results.php имеет:

<div id="ajax_search_results">
 <ul>
 <li><a href="#">First result</a></li>
 <li><a href="#">Second result</a></li>
 <li><a href="#">Third result</a></li>
 <li><a href="#">More...</a></li>
 </ul>
</div>

Это работает как ожидается в Firefox. Но в Chrome я вижу сообщение об ошибке, следующее в консоли JS:

XMLHttpRequest cannot load 
file:///C:/xampp/xampp/htdocs/snk/ajax_search_results.php?s=keyword. 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'null' is therefore not allowed access.

Не могли бы вы помочь выявить проблему?

Ответы

Ответ 1

Если вы используете Google Chrome, ваша проблема следующая:

[XMLHttpRequest не может загружать файл. Получен неверный ответ. Следовательно, исходное значение "null" не допускается.]

Затем создайте пакетный файл, выполнив следующие шаги:

Откройте блокнот на рабочем столе.

  • Просто скопируйте и вставьте следующие данные в открываемый в настоящий момент блокнот:

Запустить "chrome" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files   Выход

  • Примечание. В предыдущей строке замените полный абсолютный адрес на местоположение установки хрома. [Чтобы найти его... Нажмите правой кнопкой мыши на короткую ссылку на ссылку chrome.exe или значок и нажмите Свойства и скопируйте ссылку целевой страницы. > ] [Помните: начать файлы в одной строке и выйти в другой строке, нажав enter]
  • Сохраните файл как fileName.bat [Очень важно: .bat]
  • Если вы хотите позже изменить файл, щелкните правой кнопкой мыши на .bat файле и нажмите "Изменить". После изменения сохраните файл.

Это будет делать что? Он откроет Chrome.exe с доступом к файлам. Теперь из любого места на вашем компьютере просматривайте свои html файлы с помощью Google Chrome. Я надеюсь, что это решит проблему XMLHttpRequest.

Имейте в виду: просто используйте файл batcut ярлыка, чтобы открыть Chrome, когда вам это нужно. Скажите, если это решит вашу проблему. У меня была аналогичная проблема, и я решил ее таким образом. Спасибо.

Ответ 2

добавьте это в начало файла,

header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");

Ответ 3

Это, предположительно, потому, что вы пытаетесь сделать кросс-доменный запрос или что-то, что разъясняется как оно. Вы можете попробовать добавить header('Access-Control-Allow-Origin: *'); в запрошенный файл.

Кроме того, такая проблема иногда возникает при реализации событий, отправленных сервером, в случае использования event-source или XHR polling в IE 8-10 (что сбивало меня с первого раза).