Я пытаюсь создать сайт, который можно загрузить и запустить локально, запустив его индексный файл.
Все файлы являются локальными, никакие ресурсы не используются онлайн.
Когда я пытаюсь использовать плагин AJAXSLT для jQuery для обработки файла XML с шаблоном XSL (в подкаталогах), я получаю следующие ошибки:
XMLHttpRequest cannot load file:///C:/path/to/XSL%20Website/data/home.xml. Origin null is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load file:///C:/path/to/XSL%20Website/assets/xsl/main.xsl. Origin null is not allowed by Access-Control-Allow-Origin.
Индексный файл, file:///C:/path/to/XSL%20Website/index.html
выполняющий запрос, находится в то время, когда используемые файлы JavaScript хранятся в file:///C:/path/to/XSL%20Website/assets/js/
.
Как я могу сделать, чтобы исправить эту проблему?
По сути, единственный способ справиться с этим - запустить веб-сервер на локальном хосте и обслуживать их оттуда.
Браузер небезопасен для разрешения ajax-запроса на доступ к любому файлу на вашем компьютере, поэтому большинство браузеров, по-видимому, рассматривают запросы «file: //» как не имеющие источника для цели « Политика одинакового происхождения »
Запуск веб-сервера может быть таким же простым, как
cd
вход в каталог, в котором находятся и работают файлы:источник
python -m http.server
.Вот яблочный скрипт, который запускает Chrome с включенным параметром --allow-file-access-from-files, для разработчиков OSX / Chrome:
источник
open -a 'Google Chrome' --args --allow-file-access-from-files
.Это решение позволит вам загрузить локальный скрипт с помощью jQuery.getScript (). Это глобальный параметр, но вы также можете установить параметр crossDomain для каждого запроса.
источник
Как насчет использования javascript FileReader для открытия локального файла, то есть:
Теперь нажмите
Choose file
кнопку и перейдите к файлуfile:///C:/path/to/XSL%20Website/data/home.xml
источник
Запуск хром , как так , чтобы обойти это ограничение:
open -a "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --args --allow-file-access-from-files
.Получено из комментария Джоша Ли, но мне нужно было указать полный путь к Google Chrome, чтобы избежать открытия Google Chrome из моего раздела Windows (в Parallels).
источник
Способ, который я только что обошел, заключается в том, чтобы вообще не использовать XMLHTTPRequest, а вместо этого включить необходимые данные в отдельный файл javascript. (В моем случае мне понадобился двоичный двоичный объект SQLite для использования с https://github.com/kripken/sql.js/ )
Я создал файл с именем
base64_data.js
(и использовал егоbtoa()
для преобразования необходимых мне данных и вставки в него,<div>
чтобы я мог его скопировать).а затем включил данные в HTML, как обычный JavaScript:
Я предполагаю, что было бы тривиально изменить это, чтобы читать JSON, возможно даже XML; Я оставлю это как упражнение для читателя;)
источник
Вы можете попробовать положить
'Access-Control-Allow-Origin':'*'
вresponse.writeHead(, {[here]})
.источник
используйте «веб-сервер для приложения Chrome». (На самом деле он у вас есть на компьютере, знаете ли вы или нет. Просто найдите его в Кортане!). откройте его и нажмите «выбрать файл», выберите папку с вашим файлом в нем. на самом деле не выбирайте свой файл. выберите папку с файлами затем нажмите на ссылку (и) под кнопкой «выбрать папку».
если это не приведет вас к файлу, добавьте имя файла в urs. как это:
ссылка на веб-сервер для Chrome: нажмите меня
источник