SCRIPT5: L'accès est refusé dans IE9 sur xmlhttprequest
var xhttp=new XMLHttpRequest();
xhttp.open('GET', 'foo.xml', false);
F12 pop dos: SCRIPT5: l'Accès est refusé. à la ligne 95, qui correspond au pfttx.ligne ouverte.
Mon JavaScript semble bien formé, et Firefox fait ce que je pense qu'il devrait.
j'ai lu beaucoup de questions très similaires à celle-ci, donc j'ai vérifié la même Politique D'origine, mais je ne vois pas comment cela pourrait s'appliquer en considérant foo.xml est dans le même répertoire que le fichier html. J'ai ouvert la permission de script sur mon intranet local, et dit McAfee de prendre une pause de cinq minutes, juste pour être sûr. J'ai même essayé de lancer IE en tant qu'administrateur, donc ça ne peut pas vraiment être un problème de permissions n'est-ce pas? Sinon, pourquoi refuserait-on à IE l'accès à un dossier local?
11 réponses
Vous avez probablement un Marque-de-le-Web sur le fichier local. Voir http://blogs.msdn.com/b/ieinternals/archive/2011/03/23/understanding-local-machine-zone-lockdown-restricted-this-webpage-from-running-scripts-or-activex-controls.aspx pour une explication.
cet exemple illustre comment utiliser AJAX pour extraire des ressources de n'importe quel site web. il fonctionne à travers 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;
ce message d'erreur (SCRIPT5: L'accès est refusé. peuvent également être rencontrés si la page cible d'un .remplacer la méthode n'est pas trouvé (j'avais entré le nom de page incorrectement). Je le sais parce que ça m'est arrivé, c'est pourquoi j'ai cherché plus d'informations sur la signification du message d'erreur.
sur IE7, IE8, et IE9 il suffit d'aller aux Paramètres->Options Internet->Sécurité->niveau personnalisé et modifier les paramètres de sécurité sous" divers "définir" accéder aux sources de données à travers les domaines " pour activer.
très probablement, vous devez avoir le Javascript servi sur SSL.
Source: https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk
je pense que le problème est que le fichier est sur votre ordinateur local, et IE refuse l'accès parce que s'il permet aux scripts d'avoir accès aux fichiers sur le comp que le navigateur est en cours d'exécution, ce serait un énorme trou de sécurité.
Si vous avez accès à un serveur ou un autre comp que vous pourriez utiliser comme un, peut-être que vous pourriez essayer de mettre les fichiers sur le que, et puis exécuter les scripts comme vous le feriez à partir d'un site web.
vous demandez probablement une ressource externe, ce cas nécessite L'objet XDomain. Voir l'exemple de code ci-dessous pour savoir comment faire ajax request 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 fait face à la même question sur IE10. J'ai trouvé une solution en utilisant la requête ajax de jQuery 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
ouvrir 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)
remplacer le Document Mode par Standards . (La page doit être rafraîchie automatiquement, si vous changez le Document Mode )
problème devrait être corrigé. Profiter de