Si vous travaillez sur un petit projet frontal et que vous voulez le tester localement, vous l'ouvrirez généralement en pointant votre répertoire local dans le navigateur Web, par exemple en entrant file:///home/erick/mysuperproject/index.html dans votre barre d'URL. Cependant, si votre site essaie de charger des ressources, même si elles sont placées dans votre répertoire local, vous pouvez voir des avertissements comme celui-ci :
XMLHttpRequest ne peut pas charger file:///home/erick/mysuperproject/mylibrary.js. Les demandes d'origine croisée ne sont prises en charge que pour le protocole HTTP.
Chrome et d'autres navigateurs modernes ont mis en place des restrictions de sécurité pour les requêtes d'origine croisée, ce qui signifie que vous ne pouvez pas charger quoi que ce soit via file:/// , vous devez utiliser le protocole http:// à tout moment, même localement - en raison des politiques de Same Origin. Aussi simple que cela, vous devez monter un serveur web pour y exécuter votre projet.
Ce n'est pas la fin du monde et il existe de nombreuses solutions, notamment le bon vieux Apache (avec VirtualHosts si vous exécutez plusieurs autres projets), node.js avec express, un serveur Ruby, etc. ou simplement la modification des paramètres de votre navigateur.
Cependant, il existe une solution plus simple et plus légère pour les paresseux. Vous pouvez utiliser SimpleHTTPServer de Python. Il est déjà fourni avec Python, vous n'avez donc pas besoin d'installer ou de configurer quoi que ce soit !
Donc cd dans votre répertoire de projet, par exemple
1 cd /home/erick/mysuperprojet et ensuite utiliser simplement
1 python -m SimpleHTTPServer Et c'est tout, vous verrez ce message dans votre terminal
1 Serveur HTTP sur 0.0.0.0 port 8000 ... Vous pouvez maintenant retourner dans votre navigateur et visiter http://0.0.0.0:8000
avec tous vos fichiers de répertoire servis là. Vous pouvez configurer le port et d'autres choses, il suffit de voir la documentation. Mais cette simple astuce fonctionne pour moi lorsque je suis pressé de tester une nouvelle bibliothèque ou de travailler sur une nouvelle idée.
Et voilà, bon codage !
EDITAR: Dans Python 3+, SimpleHTTPServer a été remplacé par http.server. Ainsi, dans Python 3.3, par exemple, la commande suivante est équivalente :
python -m http.server 8000
5 votes
Avez-vous essayé d'utiliser une URL HTTP au lieu d'un chemin local ?
1 votes
Je suggère d'utiliser une url complète
2 votes
@EdwardThomson Ça a marché ! Mais maintenant je dois mettre
allow_url_include = On
dans la configuration de mon serveur.0 votes
Duplicata possible de Erreur "Les demandes d'origine croisée ne sont prises en charge que pour HTTP." lors du chargement d'un fichier local