2010-08-21 9 views
22

puedo saber si en mi propia página web, si mi usuario está en: http://www.example.com/form.php
política del mismo origen - API públicas AJAX y utilizando

y hago una petición AJAX de esa página a: http://example.com/responder.php

Fallará debido a la misma política de origen (el subdominio es diferente).

Lo que intento comprender es cómo es que las solicitudes AJAX pueden extraer datos de API como flickr cuando la solicitud y el servidor son obviamente diferentes.


Editar:

por ejemplo: ¿Por qué funciona este código?

$.getJSON('http://api.flickr.com/services/rest/?&;method=flickr...' 

(Referred this Community Wiki) ¿Está utilizando Cross Origin Resource Sharing?

Gracias!

Respuesta

17

Existen pocos métodos conocidos para evitar la Política de Same Origin. Una técnica popular es usar "Script Tag Injection" como en JSONP. Dado que la etiqueta <script> no está restringida por la misma política de origen, una secuencia de comandos en un dominio de terceros puede proporcionar código ejecutable que interactúa con una función de devolución de llamada proporcionada. Es posible que desee echa un vistazo a la sección "Consejos y trucos" en el siguiente artículo para leer más sobre el tema:

Usted también podría estar interesado en probar el siguiente mensaje de desbordamiento de pila para la lectura adicional sobre otras técnicas para evitar la política del mismo origen:


ACTUALIZACIÓN: Además la cuestión actualización:

Citando de la documentación de jQuery en $.getJSON(): "? Devolución de llamada ="

Si la URL incluye la cadena en la URL, la solicitud se trata como JSONP en su lugar.

+0

No es tanto que el elemento esté exento de la misma política de origen que JavaScript no tiene acceso a los datos brutos devueltos. Depende de que el tercero proporcione código ejecutable que interactúe con una función que proporcione. – Quentin

+1

@David: gracias. Actualicé mi respuesta para ser más preciso :) –

+1

aha! ¡maldición, jQuery haciendo todos estos trucos lo maneja en el fondo! :) ¡ORDENADO! Love jQuery --- Ref: http://insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html – DMin

Cuestiones relacionadas