2010-07-01 15 views
8

Algo que encuentro realmente confuso, ¿por qué las solicitudes AJAX están limitadas al mismo dominio? ¿Cuál es el razonamiento detrás de esto?¿Por qué las solicitudes AJAX están limitadas al mismo dominio?

No veo ningún problema con la solicitud de archivos desde ubicaciones externas, también los servidores que hacen que las solicitudes XMLHTTP parezcan obtener y publicar correctamente en ubicaciones externas.

+0

Probablemente su contraseña no se envíe a un servidor falso ... – Alxandr

+0

Pero el sitio web en el que se encuentra debería enviar su contraseña a través de un script, y teóricamente ya lo saben, por lo que no tendría sentido ? –

Respuesta

17

Imagine lo siguiente:

Ven en mi sitio web fabulosa www.halfnakedgirls.com. Se divierte viendo lo que parece ser documentación técnica sobre fisiología humana, pero a sus espaldas, algunas líneas de JavaScript están ejecutando alguna solicitud a otro dominio, digamos www.yourpaypallike.com.

Solicitudes como http://www.yourpaypallike.com/account/[email protected]&amount=984654 o http://www.mymailprovider.com/mails/export?format=csv.

¿Ves ahora por qué está prohibido? =)

+1

Gracias, eso tiene mucho sentido. Suponiendo que el usuario haya iniciado sesión en Paypal, el sitio web malvado podría acceder a un sitio externo como si estuvieran registrados allí. –

+0

Imagina que soy un tonto y no veo por qué está prohibido. ¿El problema es que halfnakedgirls.com puede enviar malas instrucciones a paypal usando sus cookies de Paypal, a pesar de que no puede leer esas cookies? Mientras que con la solución del "redireccionamiento del sitio", los datos de la cookie se eliminan y PayPal no considerará que usted inició sesión. –

+0

Exactamente, porque su navegador agrega automáticamente las cookies a cada solicitud realizada. Usted solicita yourpaypallike.com, el navegador envía cookies de paypallike.com a lo largo de la solicitud de ajax. El 'redireccionamiento del sitio' de hecho quita la cookie. La primera solicitud hecha al 'servidor de intermediario' no contiene cookies del objetivo final (youpaypallike.com), por lo que cuando el servidor del intermediario transfiere la solicitud a paypalike, no hay cookies de pago. –

0

Aquí hay alguna información para satisfacer su pregunta: http://en.wikipedia.org/wiki/Same_origin_policy

+1

Gracias por el enlace, pero todavía no me da una razón satisfactoria POR QUÉ no está permitido, simplemente lo describe como un concepto de seguridad. –

1

Es por motivos de seguridad - si un sitio web podría ejecutar llamadas AJAX a cualquier dominio que querían en el lado del cliente, se plantea un grave riesgo.

Sin embargo, hay formas de evitarlo: puede hacer que su AJAX llame a un script PHP en el mismo dominio, que a su vez puede invocar un script desde otro dominio y devolverlo. Sin embargo, esto no usaría el navegador como medio de comunicación, sino que usaría su servidor web.

+0

Gracias, sé que representa un riesgo de seguridad pero nadie ha explicado qué es esto todavía. –

3

Tom, no es "solicitud de Ajax limitada". AJAX está basado en JavaScript. Por razones de seguridad, JavaScript tiene prohibido el acceso en dominios cruzados. Si realmente quieres cruzar el dominio Ajax, puedes hacer un hack.

YourPage (Ajax) ----> YourServer ----> ExternalDomain

Puede llamar a una página en el servidor utilizando Ajax, su dominio llamará al dominio externo utilizando lado del servidor, y obtener el resultado luego regreso a ti como respuesta de Ajax. Por supuesto, la solicitud hecha al servidor ExternalDomain se llamará SIN enviar cookies para ExternalDomain que residen en la memoria de su navegador. Eso es porque la solicitud la realiza su servidor y no su navegador.

Cuestiones relacionadas