Formas de eludir la política del mismo origen

La misma política de origen

Quería hacer un wiki de la comunidad con respecto a las políticas de mismo origen de HTML/JS para, con suerte, ayudar a cualquiera que busque este tema. Este es uno de los temas más buscados en SO y no hay una wiki consolidada para ello así que aquí voy :)

La política del mismo origen impide que un

documento o script cargado desde un origen obtenga o establezca propiedades de un documento de otro de otro origen. Esta política se remonta a hasta Netscape Navigator 2.0.

¿Cuáles son tus formas favoritas de evitar las políticas de mismo origen?

Por favor, haz que los ejemplos sean verbales y, preferiblemente, enlaza también tus fuentes.

**El método del proxy inverso.

  • Tipo de método: Ajax

Configurar un simple proxy inverso en el servidor, permitirá al navegador utilizar rutas relativas para las peticiones Ajax, mientras que el servidor estaría actuando como un proxy hacia cualquier ubicación remota.

Si se utiliza mod_proxy en Apache, la directiva de configuración fundamental para configurar un proxy inverso es el ProxyPass. Normalmente se utiliza de la siguiente manera:

ProxyPass     /ajax/     http://other-domain.com/ajax/

En este caso, el navegador podría solicitar /ajax/web_service.xml como una URL relativa, pero el servidor lo serviría actuando como proxy a http://other-domain.com/ajax/web_service.xml.

Una característica interesante de este método es que el proxy inverso puede distribuir fácilmente las peticiones hacia múltiples back-ends, actuando así como un equilibrador de carga.

Comentarios (0)

Yo uso JSONP.

Básicamente, se añade

<script src="http://..../someData.js?callback=some_func"/>

en tu página.

Se debe llamar a some_func() para que se le notifique que los datos están dentro.

Comentarios (5)

Personalmente, window.postMessage es la forma más fiable que he encontrado para los navegadores modernos. Tienes que hacer un poco más de trabajo para asegurarte de que no te estás abriendo a los ataques XSS, pero es una compensación razonable.

También hay varios plugins para los conjuntos de herramientas de Javascript más populares que envuelven window.postMessage y proporcionan una funcionalidad similar a los navegadores más antiguos que utilizan los otros métodos mencionados anteriormente.

Comentarios (0)