SCRIPT5: l'accès est refusé dans IE9 sur xmlhttprequest

var xhttp=new XMLHttpRequest(); xhttp.open('GET', 'foo.xml', false); 

F12 pops back: SCRIPT5: l'accès est refusé. Sur la ligne 95, qui est la ligne xhttp.open.

Mon JavaScript semble bien formé, et Firefox fait ce que je pense qu'il devrait.

J'ai lu beaucoup de questions très semblables à celles-ci, donc j'ai vérifié la même politique d'origine, mais je ne vois pas comment cela s'appliquerait, étant donné que foo.xml se trouve dans le même répertoire que le fichier html. J'ai ouvert les autorisations de script sur mon intranet local et j'ai dit à McAfee de faire une pause de cinq minutes, juste pour être sûr. J'ai même essayé d'exécuter IE en tant qu'administrateur, donc ce ne peut pas vraiment être un problème d'autorisations, est-ce? Pourquoi autrement IE serait-il refuser l'accès à un fichier local?

    Peut-être que vous souhaitez vérifier les liens ci-dessous:

    • Exécuter des requêtes JavaScript en domaine transversal en utilisant XMLHttpRequest ou XDomainRequest
    • XMLHttpRequest – Mozilla Developer Network
    • Un bon résumé des requêtes jQuery x-domain
    • Quel navigateur prend en charge le domaine x?

    Cet exemple illustre comment utiliser AJAX pour extraire les ressources de n'importe quel site Web. Cela fonctionne dans les navigateurs. Je l'ai testé sur IE8-IE10, safari, chrome, firefox, opéra.

     if (window.XDomainRequest) xmlhttp = new XDomainRequest(); else if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("GET", "http://api.hostip.info/get_html.php", false); xmlhttp.send(); hostipInfo = xmlhttp.responseText.split("\n"); var IP = false; for (i = 0; hostipInfo.length >= i; i++) { if (hostipInfo[i]) { ipAddress = hostipInfo[i].split(":"); if (ipAddress[0] == "IP") { IP = ipAddress[1]; } } } return IP; 

    Sur IE7, IE8 et IE9, passez à Paramètres-> Options Internet-> Sécurité-> Niveau personnalisé et modifiez les paramètres de sécurité sous "Divers" définissez "Accéder aux sources de données à travers les domaines" pour activer.

    Ce message d'erreur (SCRIPT5: Accès refusé.) Peut également être rencontré si la page cible d'une méthode .replace n'est pas trouvée (j'avais entré le nom de la page de manière incorrecte). Je sais parce que cela m'est arrivé, c'est pourquoi je suis allé à la recherche de plus d'informations sur la signification du message d'erreur.

    Très probablement, vous devez avoir le Javascript sur SSL.

    Source: https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk

    Je pense que le problème est que le fichier se trouve sur votre ordinateur local, et IE refuse l'accès parce que s'il permet aux scripts d'accéder aux fichiers sur le comp que le navigateur exécute, ce serait un obstacle de sécurité HUGE.
    Si vous avez accès à un serveur ou à un autre comp que vous pourriez utiliser en tant que tel, peut-être que vous pourriez essayer de mettre les fichiers sur ce sujet, puis exécuter les scripts comme vous le feriez à partir d'un site Web.

    Probablement vous demandez une ressource externe, cette affaire IE nécessite l'objet XDomain. Voir l'exemple de code ci-dessous pour savoir comment faire une demande ajax pour tous les navigateurs avec des domaines croisés:

     Tork.post = function (url,data,callBack,callBackParameter){ if (url.indexOf("?")>0){ data = url.substring(url.indexOf("?")+1)+"&"+ data; url = url.substring(0,url.indexOf("?")); } data += "&randomNumberG=" + Math.random() + (Tork.debug?"&debug=1":""); var xmlhttp; if (window.XDomainRequest) { xmlhttp=new XDomainRequest(); xmlhttp.onload = function(){callBack(xmlhttp.responseText)}; } else if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest(); else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200){ Tork.msg("Response:"+xmlhttp.responseText); callBack(xmlhttp.responseText,callBackParameter); Tork.showLoadingScreen(false); } } xmlhttp.open("POST",Tork.baseURL+url,true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send(data); } 

    J'avais eu un problème similaire sur IE10. J'ai eu une solution de contournement en utilisant la requête jquery ajax pour récupérer des données:

     $.ajax({ url: YOUR_XML_FILE aync: false, success: function (data) { // Store data into a variable }, dataType: YOUR_DATA_TYPE, complete: ON_COMPLETE_FUNCTION_CALL }); 
      $.ajax({ url: '//freegeoip.net/json/', type: 'POST', dataType: 'jsonp', success: function(location) { alert(location.ip); } }); 

    Ce code fonctionnera aussi sur les sites https

    Ouvrez l'outil de développement Internet Explorer, Outils -> outils de développement F12. (Je pense que vous pouvez également appuyer sur F12 pour l'obtenir)

    Modifiez le mode Document aux normes . (La page doit être automatiquement actualisée si vous modifiez le mode Document )

    Le problème devrait être résolu. Prendre plaisir