#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 /