lunes, 10 de marzo de 2008

uncaught exception: Permiso denegado al llamar al método XMLHttpRequest.open

uncaught exception: Permiso denegado al llamar al método XMLHttpRequest.open es uno de los errores que ocurre al querer acceder a una página fuera de nuestro dominio, mediante el objeto XMLHttpRequest. Este error ocurre en el navegador Mozilla Firefox, que por cuestiones de seguridad bloquea el acceso a objetos de distintos dominios. Para solucionar este problema es necesario añadir algunas líneas a nuestro archivo de configuración de Mozilla Firefox (user.js), el cual se encuentra en la carpeta:

$HOME/.mozilla/firefox/x* (Linux)
%AppData%\Mozilla\Firefox\Profiles (Windows)

Añadiendo estas líneas el problema se soluciona:

user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.open", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.sites", "http://localhost http://www.pagina1.com http://www.pagina2.com");
user_pref("capability.policy.XMLHttpRequestToAnySite.CDATASection.nodeValue", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.attributes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.childNodes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.firstChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.getAttribute", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.getElementsByTagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.lastChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.nodeName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.nodeType", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.parentNode", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.tagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.nextSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Element.previousSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.HTMLCollection.length", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.HTMLCollection.item", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.attributes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.childNodes", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.firstChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.getAttribute", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.getElementsByTagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.lastChild", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.nodeName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.nodeType", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.parentNode", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.tagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.nextSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.Text.previousSibling", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLDocument.documentElement", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLDocument.getElementsByTagName", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.channel", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.open", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.responseText", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.responseXML", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.send", "allAccess");
user_pref("capability.policy.XMLHttpRequestToAnySite.XMLHttpRequest.setRequestHeader", "allAccess");
user_pref("capability.policy.policynames", "XMLHttpRequestToAnySite");

En la sección
user_pref("capability.policy.XMLHttpRequestToAnySite.sites", "http://localhost http://www.pagina1.com http://www.pagina2.com");
añadimos los sitios web que queramos acceder con el objeto XMLHttpRequest (van separados de espacio cuando son mas de uno).

Luego en el explorador ponemos:
about:config
y buscamos el apartado: signed.applets.codebase_principal_support
al cual le asignamos el valor true.

Listo, solo falta reiniciar el firefox.

4 comentarios:

Tomas Loon dijo...

No me funciono

Juan Carbajal dijo...

Dame más información para ver por que razón no te funciono.

Anónimo dijo...

en ubunto 7.10 tenía que deinstalar el firefox por completo y borrar el directorio $HOME/.mozilla/firefox/
despues de reinstalar todo y hacer lo que está explicado en esta página y poner signed.applets.codebase_principal_support en about:config a true me funcionó.

Pero cuidado con updates del firefox, se lo cargan todo otra vez

Salu2

heinzkeinz

ZequeZ dijo...

Ahora user.js creo que se llama prefs.js

Además, al menos en Firefox 3.5, en Linux, mas bien, Ubuntu, me borra toda la configuración cada vez que se inicia... T.T