XMLHttpRequest pour obtenir la réponse HTTP de l'hôte distant
Pourquoi le code suivant Basé sur Mozilla exemple ne fonctionne pas? Essayé avec Firefox 3.5.7 & Chrome.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
</body>
<script>
var req = new XMLHttpRequest();
req.open('GET', 'http://www.mozilla.org/', false);
req.send();
if(req.status == 200) {
alert(req.responseText);
}
</script>
</html>
Veuillez à ce que le navigateur est en tirant le html à partir du disque local (file:///C:/Users/Maxim%20Veksler/Desktop/XMLHTTP.html)
Sur Firefox il donne l'erreur suivante:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/Users/Maxim%20Veksler/Desktop/XMLHTTP.html :: <TOP_LEVEL> :: line 10" data: no]
Ce que je fais mal? Je veux présenter une demande à l'hôte distant et alerte le résultat (plus tard ajouté dans un div).
source d'informationauteur Maxim Veksler
Vous devez vous connecter pour publier un commentaire.
Votre navigateur empêche le cross-site scripting. Vous devez utiliser un chemin relatif, sinon la plupart des navigateurs, il suffit de retourner une erreur ou un vide responseText.
La suite d'un Débordement de Pile post est probablement aussi lié à votre problème:
Je suis aussi en supposant que vous avez ouvert votre test HTML de la page directement dans le navigateur, à en juger par votre référence à
file:///...
. PourXMLHttpRequest
des appels, vous devez vous servir du HTML à partir d'un serveur. Essayez quelque chose comme xampp (http://www.apachefriends.org/en/xampp.html) pour obtenir un serveur local et en cours d'exécution, puis exécutez-le test dehttp://localhost/XMLHTTP.html
.Remarque, ce n'est pas le même-l'origine du problème, mais cela permettrait le code suivant fonctionne:
Vous ne pouvez pas faire des demandes sur d'autres domaines, même avec des fichiers locaux.
https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript
Sauf développement d'une extension, qui n'ont pas les mêmes restrictions que d'une page web.
Problème de sécurité non?
Probablement firefox, c'est de prévenir le fichier local de parler à un hôte distant?
Scoutisme tour du net - trouvé. Essayez d'ajouter ceci au début de votre script:
Ne peuvent pas garantir ce travaillerez; car, en définitive, ce que vous voulez faire est d'entrer un trou de sécurité que les navigateurs ont été spécifiquement code pour avoir bouché (requêtes inter-domaine).
Il existe des scénarios où il peut être activé, même si, habituellement, à la discrétion de l'utilisateur.