web-dev-qa-db-fra.com

AJAX demande au système de fichiers local ne fonctionne pas dans Chrome?

Je travaille pour créer dynamiquement une interface utilisateur à partir de XML à l'aide de jQuery. Mon jQuery fonctionne dans Firefox mais dans Chrome cela ne fonctionne pas. Cela me donne cette erreur de console:

Les demandes Cross Origin ne sont prises en charge que pour les schémas de protocole: http, data, chrome, chrome-extension, https, chrome-extension-resource.

Ce qui suit est mon code jQuery qui fonctionne sur Firefox mais ne fonctionne pas sur Google Chrome:

$.ajax({
    url: 'file:///home/satendra/dndExamples/avisDnD/file.xml',
    success: function(xml) {
        $(xml).find('Tab').each(function() {
            var id = $(this).attr('URL');
            var tab = $(this).attr('TabName');
            $("ul").append("<li><a href="+ id +">"+ tab +"</li>");
        });
    }
});
16
vibog

Firefox autorise la requête car il accepte les requêtes vers le système de fichiers local (c'est-à-dire le file:// protocole) s'ils proviennent de là aussi. Cependant Chrome refuse toutes les requêtes XMLHttpRequests à file:// urls.

Notez que vous ne pouvez pas faire de requête AJAX au système de fichiers local à partir d'un domaine externe dans l'un ou l'autre navigateur - ce serait un massif faille de sécurité si vous le pouviez.

Pour cela AJAX demande de travailler dans Chrome vous devez faire la demande à un serveur Web. Si vous êtes sous Windows, vous pouvez facilement installer IIS ou WAMP sur votre machine locale.

Notez qu'il est possible d'activer un paramètre dans Google Chrome qui autorise les requêtes vers le système de fichiers local à partir du navigateur, mais ce n'est vraiment pas une bonne idée de l'utiliser. Si vous décidez que vous voulez allez-y et faites-le de toute façon, un guide peut être trouvé ici .

21
Rory McCrossan