javascript - microsoft - SCRIPT5: Acceso denegado en IE9 en xmlhttprequest
xmlhttprequest ajax (11)
var xhttp=new XMLHttpRequest();
xhttp.open(''GET'', ''foo.xml'', false);
F12 vuelve a aparecer: SCRIPT5: Acceso denegado. en la Línea 95, que es la línea xhttp.open.
Mi JavaScript parece estar bien formado, y Firefox hace lo que creo que debería.
He leído muchas preguntas muy similares a esta, así que revisé la Política de origen idéntico, pero no veo cómo se aplicaría, ya que foo.xml está en el mismo directorio que el archivo html. Abrí los permisos de scripting en mi intranet local y le dije a McAfee que tomara un descanso de cinco minutos, solo para estar seguro. Incluso intenté ejecutar IE como administrador, así que esto no puede ser realmente un problema de permisos ¿o sí? ¿Por qué sino se le negaría a IE el acceso a un archivo local?
Abra la Herramienta de desarrollo de Internet Explorer, Herramientas -> Herramientas de desarrollador de F12. (Creo que también puedes presionar F12 para obtenerlo)
Cambia el modo de documento a estándares . (La página debe actualizarse automáticamente, si cambia el modo de documento )
El problema debe ser arreglado. Disfrutar
Creo que el problema es que el archivo está en su computadora local, y IE está denegando el acceso porque si permite que las secuencias de comandos tengan acceso a los archivos en la compilación en la que se ejecuta el navegador, eso sería un gran agujero de seguridad.
Si tiene acceso a un servidor u otro borrador que podría usar como uno, tal vez podría tratar de poner los archivos en ese y luego ejecutar los scripts como lo haría desde un sitio web.
En IE7, IE8 e IE9 solo vaya a Configuración-> Opciones de Internet-> Seguridad-> Nivel personalizado y cambie la configuración de seguridad en "Varios", establezca "Acceder a orígenes de datos entre dominios" a Habilitar.
Es probable que tenga un Mark-of-the-Web en el archivo local. Consulte 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 para una explicación.
Este ejemplo ilustra cómo usar AJAX para obtener recursos de cualquier sitio web. funciona en todos los navegadores. lo he probado en IE8-IE10, safari, cromo, firefox, opera.
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;
Este mensaje de error (SCRIPT5: acceso denegado) también se puede encontrar si no se encuentra la página de destino de un método .replace (ingresé incorrectamente el nombre de la página). Lo sé porque me pasó a mí, por lo que fui en busca de más información sobre el significado del mensaje de error.
Lo más probable es que necesite tener el Javascript servido sobre SSL.
Fuente: https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk
Me enfrenté a un problema similar en IE10. Tuve una solución al utilizar la solicitud jQuery ajax para recuperar datos:
$.ajax({
url: YOUR_XML_FILE
aync: false,
success: function (data) {
// Store data into a variable
},
dataType: YOUR_DATA_TYPE,
complete: ON_COMPLETE_FUNCTION_CALL
});
Probablemente está solicitando un recurso externo, este caso IE necesita el objeto XDomain. Consulte el código de ejemplo a continuación para saber cómo hacer una solicitud de ajax para todos los navegadores con dominios cruzados:
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);
}
$.ajax({
url: ''//freegeoip.net/json/'',
type: ''POST'',
dataType: ''jsonp'',
success: function(location) {
alert(location.ip);
}
});
Este código también funcionará en los sitios https