Как принудительно разрешить браузеру запрашивать file:/// CORS

Я визуализирую результаты моего филогеографического анализа, используя SpreaD3 для рендеринга. Он может генерировать либо kml-файл для Google Earth, либо html-страничку (со скриптом и json-данными внутри) для просмотра в браузере. Однако, при попытке использовать последнюю возможность вижу следующее:

Неработающая страница

После этого открыл свойства поддержки доступности и увидел вот это сообщение об ошибке:

Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на file:///my_path_to_results/WNV_homogeneous/renderers/d3/d3renderer/data.json. (Причина: запрос CORS выполнен не по http).

Веб-разработка не моя область, но, если я правильно понял, то проблема в генерируемом скрипте, так как он не содержит в шапке соответствующего запроса на разрешение: Access-Control-Allow-Origin: *.

Что можно с этим сделать? Самым простым и практичным мне пока что видится каким-то образом принудительно разрешить браузеру file:///-запросы для данной страницы. Можете, пожалуйста, что-нибудь посоветовать?

Нашёл вот такую рекомендацию (я использую Firefox, но с Хромом всё тоже самое), но она не сработала.

Конечный результат должен выглядеть примерно как-то так:

Красивый рендер дерева


Ответы (1 шт):

Автор решения: Pavel Mayorov

Лучше всего поднять веб-сервер для отображения этих файлов.

На винде можно использовать IIS: достаточно установить его как компонент системы и положить файлы в c:\inetpub\wwwroot, как они станут доступны по http://localhost. также можно ничего никуда не копировать, а настроить виртуальный путь через GUI. Главное - чтобы у вас Скайп 80й порт не отобрал.

В линуксе можно просто поставить какой-нибудь nginx или apache из пакета, после чего точно так же будет куда скопировать файлы или прописать виртуальный путь с алиасом в конфиге.

Если вам нужно переносимое решение, чтобы можно было скопировать набор файлов и ничего не настраивать - можно воспользоваться любым переносимым сервером. Вот первое что я нашёл: https://github.com/TheWaWaR/simple-http-server. В разделе "releases" того проекта можно найти исполнимый файл, который при запуске начинает раздавать по http текущую директорию на порту 8000.

Наконец, если вам хочется чтобы всё открывалось совсем одним кликом - можете превратить ваши файлы в приложение на Электроне (https://www.electronjs.org/). Программировать вам, скорее всего, ничего не придётся (ведь серверная часть не нужна, а все клиентские файлы уже есть), но с установкой и в настройкой повозиться придётся. Зато на выходе будет приложение в котором ваши данные можно будет смотреть.

→ Ссылка