Загрузить локальный XML-файл с помощью javascript в Google Chrome

#javascript #xml #google-chrome

#javascript #xml #google-chrome

Вопрос:

Я думаю, что до версии 5 Google Chrome приведенный ниже код работал. Теперь в последней версии я получаю следующую ошибку при локальном открытии моей веб-страницы:

«XMLHttpRequest не удается загрузить file:///C:/Temp/Course.xml . Запросы из разных источников поддерживаются только для HTTP.»

Код Javascript:

 function getXmlDocument(sFile) {
    var xmlHttp, oXML;   
    // try to use the native XML parser
    try {
        xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", sFile, false); // Use syncronous communication
        xmlHttp.send(null);
        oXML = xmlHttp.responseXML;
    } catch(e) {
        // can't use the native parser, use the ActiveX instead
        xmlHttp = getXMLObject();
        xmlHttp.async = false;            // Use syncronous communication
        xmlHttp.resolveExternals = false;
        xmlHttp.load(sFile);
        oXML = xmlHttp;
    }
    // return the XML document object
    return oXML;
}

// get the best ActiveX object that can read XML
function getXMLObject() {
    // create an array with the XML ActiveX versions
    var aVersions = new Array("Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.3.0");

    // loop through the array until we can create an activeX control
    for (var i=0; i<aVersions.length; i  ) {
        // return when we can create the activeX control
        try {
            var oXML = new ActiveXObject(aVersions[i]);
            return oXML;
        } 
        catch(e) {
        }
    }
    // could not create an activeX, return a null
    return null;
}
  

Я действительно не хочу, чтобы меня заставляли каждый раз открывать веб-страницу с веб-сервера.

Ответ №1:

Доступ к локальному файлу по умолчанию отключен из соображений безопасности. Попробуйте запустить Google Chrome из командной строки с аргументом —allow-file-access

Комментарии:

1. Похоже, что, по крайней мере, начиная с Chrome 24, теперь вам нужен отдельный флаг для доступа к локальным файлам через Ajax : --allow-file-access-from-files .

Ответ №2:

Было бы безопаснее, если бы вы просто запустили локальный веб-сервер и извлекли свой html и xml с localhost.

Вы можете легко избежать развертывания файлов, просто позволив серверу обслуживать содержимое локальной папки, в которую вы помещаете свой xml.

Таким образом вы избежите

  • необходимость запуска Chrome в небезопасном режиме
  • возникли проблемы при последующем развертывании вашего приложения на сервере в Интернете

переход на сервер — это пример простого в установке веб-сервера http://www.server2go-web.de /