XMLHttpRequest плохое поведение при загрузке XML файлов - PullRequest
1 голос
/ 01 апреля 2020

В прошлом году я обнаружил, что XMLHttpRequest неправильно работает с некоторыми файлами в некоторых браузерах. Примечательно, что ему не нравилось читать некоторые (но не все) файлы xml на root сайта. Наконец-то у меня появилось время посмотреть, смогу ли я найти что-то, что работает в разных браузерах.

Мое решение - поместить файлы xml в подкаталог. Кажется очевидным, но есть некоторые причуды, с которыми я столкнулся, пытаясь это сделать. Вот некоторый код для демонстрации того, о чем я говорю:

function importXML(fileName) {
    if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
      var xmlhttp = new window.XMLHttpRequest();
    } else {
    // code for IE6, IE5
      var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.addEventListener("load", loadListener);
    xmlhttp.addEventListener("error", errorListener);

    xmlhttp.open("GET", fileName);
    xmlhttp.send();
}

Предположим, у меня есть файл xmlfile. xml на сайте root, а также в папке xml:

Просто с помощью xmlfile. xml на сайте может работать или не работать. Кажется, что разные файлы загружаются в разных браузерах.

Если отправить fileName как-то вроде "xml / xmlfile. xml", он загрузится во все браузеры, на которых я его пробовал.

Если я использую «file: ///» перед именем файла, файл не будет загружаться независимо от того, где он находится.

Если я использую это вне веб-сервера (например, просто открываю страницу html из локального каталога), она не будет работать с некоторыми файлами на root и с любыми файлами в xml folder.

Поскольку несколько браузеров демонстрируют сходные характеристики, я должен предположить, что это преднамеренное решение вести браузер таким образом. Однако я не могу придумать вескую причину, почему, например, xmlfile. xml не разрешен, но xml / xmlfile. xml в порядке. Еще более странным является вопрос, почему file: ///xml/xmlfile.xml терпит неудачу.

Может кто-нибудь пролить свет на это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...