origin falta example ejemplos domain cross control cabecera allow javascript html ajax

javascript - falta - Solicitud Ajax de dominio cruzado desde el archivo js



jsonp (7)

El método que se muestra arriba podría convertirse en un gran agujero de seguridad. Te sugerimos que verifiques el nombre del sitio con una lista blanca y construyas el URI real que se está procesando en el lado del servidor.

Aquí está el problema:

1.) Tenemos página aquí ... www.blah.com/mypage.html

2.) Esa página solicita un archivo js www.foo.com como este ...

<script type="text/javascript" src="http://www.foo.com/jsfile.js" />

3.) "jsfile.js" usa Prototype para hacer una solicitud de Ajax de regreso a www.foo.com.

4.) La solicitud de Ajax llama a www.foo.com/blah.html. La función de devolución de llamada obtiene la respuesta html y la arroja a un div.

Sin embargo, esto no parece funcionar, creo que es XSS. ¿Es eso correcto?

Si es así, ¿cómo puedo resolver este problema? ¿Hay alguna otra forma de obtener mi html de www.foo.com a www.blah.com en el cliente sin usar un iframe?


Es XSS y está prohibido. Realmente no deberías hacer las cosas de esa manera.

Si realmente lo necesita, haga que su código AJAX llame al código local (PHP, ASP, lo que sea) en blah.com y haga que se comporte como cliente y obtenga lo que necesite de foo.com y devuélvalo al cliente. Si usa PHP, puede hacerlo con fopen (''www.foo.com/blah.html'', ''r'') y luego leer el contenido como si fuera un archivo normal.

Por supuesto, allow_remote_url_fopen (o como se llame exactamente) debe estar habilitado en su php.ini.


Existe una propuesta w3c para permitir que los sitios especifiquen otros sitios que pueden hacer consultas entre ellos. (Wikipedia podría querer permitir todas las solicitudes de artículos, por ejemplo, pero el correo de google no querría permitir solicitudes, ya que esto podría permitir que cualquier sitio web se abra cuando haya iniciado sesión en google mail para leer su correo).

Esto podría estar disponible en algún momento en el futuro.




Para éxitos de dominio cruzados, este es un buen ejemplo de trabajo y ahora se lo considera como algo "estándar" http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html .

hay otras formas también, por ejemplo, inyectar iframes con document.domain alterado

http://fettig.net/weblog/2005/11/28/how-to-make-xmlhttprequest-connections-to-another-server-in-your-domain/

Aún asumo que la manera más fácil es llamar a un proxy en el mismo dominio pero luego no es realmente una llamada de WS del lado del cliente.


Como se mencionó anteriormente, JSONP es una forma de evitar esto. Sin embargo, el sitio del que solicita los datos debe ser compatible con JSONP para que pueda usarlo en el cliente. (JSONP inyecta esencialmente una etiqueta de script en la página y proporciona una función de devolución de llamada que debe invocarse con los resultados)

Si el sitio al que hace una solicitud no es compatible con JSONP, tendrá que realizar un proxy de la solicitud en su servidor. Como se mencionó anteriormente, puede hacer esto en su propio servidor o lo que he hecho en el pasado es utilizar un http://www.jsonpit.com , que servirá de proxy para la solicitud.