Локальный xml заблокирован политикой cors - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь прочитать XML-файл, используя JQuery ... Или, по крайней мере, я пытаюсь получить к нему доступ.У меня файловая система сделана так:

-> Main directory
    -> html
        -> home.html
    -> js
        -> jquery.js
        -> XMLReader.js (made it myself)
    -> XML
        -> test.xml

XMLReader.js сделан так:

'use strict'
$(document).ready(function()
{
    $.ajax( 
    {
        type: "GET",
        url: "../xml/test.xml",
        //async: false,
        dataType: "xml",
        success: function(xml)
        {
            console.log("ayy");
        }
    });
});

Когда я пытаюсь получить доступ к файлу XML, расположенному в папке xml, мойзапрос продолжает блокироваться политикой CORS (когда я пытаюсь получить доступ к МЕСТНОМУ файлу!).С другой стороны, если я помещаю все файлы в один каталог (и, конечно, меняю ссылки), это работает.

По сути, политика CORS не позволяет мне организовать локальное веб-приложение.

Есть ли способ решить это?Политика CORS не должна блокировать меня при попытке прочитать локальный файл, верно?

1 Ответ

1 голос
/ 21 марта 2019

Различные браузеры реализуют ограничения политики одинакового происхождения для файлов, загружаемых из файловой системы различными способами.

Некоторые:

  • Блокировка доступа ко всем локальным файлам
  • Заблокируйте доступ ко всем локальным файлам, кроме тех, которые находятся в том же каталоге или подкаталоге HTML-файла

Политика CORS не должна блокировать меня при попытке прочитать локальный файл.

Да, так и должно быть.Это важная функция безопасности.

Вы не хотели бы, чтобы кто-то отправлял вам файл HTML в виде вложения в электронное письмо, дважды щелкнул по нему, чтобы открыть его, а затем встроил в него JavaScript, считывая файлы с жесткого диска и отправляя их человеку, которыйотправил письмо.

Есть ли способ решить эту проблему?

Если вы хотите получить доступ к локальным файлам, то либо:

  • сделать ваши локальные файлы доступными по HTTP.Вы можете запустить HTTP-сервер, который прослушивает только петлевой сетевой интерфейс, если вы не хотите разрешать доступ с других компьютеров.
  • используйте браузер, который реализует более слабую из двух политик безопасности, которые я описал, и переставьте вашуфайловая система, как вы уже обнаружили
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...