Pregunta

¿Cómo se soluciona este problema de secuencias de comandos entre sitios Ajax en FireFox 3?

¿Fue útil?

Solución

Si estás usando jQuery, tiene una función de devolución de llamada para superar esto:

http://docs.jquery.com/Ajax/jQuery.ajax#options

A partir de JQuery 1.2, puede cargar datos JSON ubicados en otro dominio si especifica una devolución de llamada JSONP, que se puede hacer así:"miurl? devolución de llamada =?".jQuery reemplaza automáticamente el?Con el nombre del método correcto para llamar, llamando a su devolución de llamada especificada.O, si establece el tipo de datos en "JSONP", una devolución de llamada se agregará automáticamente a su solicitud AJAX.

Alternativamente, puede realizar su solicitud ajax a un script del lado del servidor que realiza la llamada entre dominios por usted y luego pasa los datos a su script.

Otros consejos

Para actualizar la respuesta (supongo que, principalmente para mi beneficio cuando busque esta respuesta más adelante), si estamos cargando XML o algo más, siempre puede preguntarle al usuario si nos permitirá leer desde otro sitio con este código. :

try {
    if (netscape.security.PrivilegeManager.enablePrivilege)
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) { 
    alert("Sorry, browser security settings won't let this program run."); 
    return; 
}

(del libro de servicios web RESTful) Pero esto solo funciona en Firefox, cuando el archivo html se carga desde un archivo local.Entonces, no es tan útil.

Una solución más:Si todo lo que necesita son los encabezados, puede especificar "HEAD" como método y no desencadenará el problema de seguridad.Por ejemplo, si sólo desea saber si la página web existe.

var client = new XMLHttpRequest();
client.open("HEAD", my_url, false);
client.send(null);
if(client.readyState != 4 || client.status != 200) //if we failed
    alert("can't open web page");

Algunos detalles más estarían bien:qué biblioteca AJAX estás usando, qué te gustaría lograr y cómo lo haces.

Por ejemplo, puede ser una solicitud Ajax entre dominios, lo cual no está permitido.En este caso utilice JSON.

Me encontré con este problema recientemente y fue mientras cargaba como AJAX la solicitud local, no un problema de secuencias de comandos entre sitios.Además, el propio Jimmy parece tener el mismo problema.Este parece ser el problema de seguridad de FF, este artículo describe el Causa y solución para acceder al código uri restringido denegado":"1012 problema.

Lo sentimos, recibí ese error usando jQuery $ .AJAX en Firefox 3.Probé la sugerencia de JSONP, pero creo que eso solo funcionará con algo que servirá a JSON.Estoy tratando de crear una muestra de mashup basado en archivos HTML local que extraiga datos de Yahoo!– Jimmy Chandra (9 de septiembre a las 17:20)

Espero que te resulte útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top