/ / SCRIPT5: Acceso denegado en IE9 - javascript, internet-explorer, internet-explorer-9

SCRIPT5: Acceso denegado en IE9 - javascript, internet-explorer, internet-explorer-9

No puedo acceder a una URL usando este script en IE9. En Chrome y en Firefox funciona bien. Cuando depuro (F12) en IE9, recibo:

SCRIPT5: ACCESS DENIED.

Mi función:

function NewPage2() {
var xmlHttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlHttp = new XMLHttpRequest();

} else { // code for IE6, IE5
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("GET", "https://graph.facebook.com/oauth/access_token?client_id=" +
"<%=ConfigurationManager.AppSettings["clientId"].ToString() %>" +
"&redirect_uri=" + <%=ConfigurationManager.AppSettings["redirectUrl"].ToString() %>" +
"&state=" + document.getElementById("text").value +
"&client_secret=" + "<%=ConfigurationManager.AppSettings["client_secret"].ToString() %>" +
"&code=" + getUrlVars2()["code"], false);
xmlHttp.send(null);
end(xmlHttp.responseText + "&userId=" + getUrlVars2()["state"]);
}

Respuestas

1 para la respuesta № 1

Esto sucede cuando intenta acceder a una solicitud de ajax de un dominio diferente a su página principal. (En este caso, estás accediendo a una URL de Facebook).

Si necesita acceder a una URL desde otrodominio, se llama una solicitud de sitio cruzado. Estos están bloqueados por defecto debido a las implicaciones de seguridad, pero aún es posible hacerlo con un poco más de trabajo.

Es bastante fácil de hacer con jQuery.

Lo curioso es que si bien incluistejQuery en las etiquetas de la pregunta, su código real no está usando jQuery en absoluto, de hecho, todo el código que proporcionó sería una sola línea en jQuery, además de que funcionaría con solicitudes entre sitios.

Debe usar una técnica Ajax llamada JSONP, que puede encontrar documentada en el sitio jQuery aquí: http://api.jquery.com/jQuery.ajax/

El código se vería algo así:

$.ajax({
dataType: "jsonp",
jsonp: "jsonp_callback",
url: "https://graph.facebook.com/......",
success: function () {
// do stuff
},
});

Espero que ayude.