2012-04-11 11 views
6

Esto es una especie de problema entre dominios, pero el problema es que el navegador (Chrome) no parece seguir el redireccionamiento. En su lugar, no se devuelve nada a la llamada jQuery ajax y recibo un error.jQuery llamada ajax al dominio que redirige a otro dominio (no se sigue)

Estoy tratando de usar jQuery.ajax, pero la URL que estoy usando redirige a otro dominio. Cuando esto sucede, obtengo un error. ¿Hay algo especial que deba hacerse para que el navegador siga el redireccionamiento?

Ya agregué access-control-allow-origin: * al encabezado del segundo dominio al que se está redirigiendo.

+0

Se puede añadir su código y el error que se ve? –

+0

No tiene permiso para obtener datos de otros dominios en su ajax. –

Respuesta

0

La única forma de obtener una llamada ajax de dominios cruzados es usar jsonp.

En jQuery, establezca .ajax() dataType en 'jsonp'. Vea aquí: http://api.jquery.com/jQuery.ajax/

Todavía puede no funcionar, si el servidor al que se está redirigiendo no es capaz de una respuesta jsonp. La diferencia entre una respuesta json y una respuesta jsonp es que una respuesta json es una cadena json pura, mientras que una respuesta jsonp es el código que llama a una función que pasa en una cadena json.

Un tutorial no muy mal estado: http://remysharp.com/2007/10/08/what-is-jsonp/

Una buena discusión: página de redirección Can anyone explain what JSONP is, in layman terms?

+2

la llamada ajax de dominio cruzado es posible con el intercambio de recursos de origen cruzado (CORS) y el autor trabajó con esta tecnología (como mencionó el encabezado "access-control-allow-origin: *") – vadimk

+0

@vadimk, Tal vez pueda proporcionar una respuesta involucrando este enfoque entonces. Pero parece que el problema está en el lado del cliente. El enfoque 'access-control-allow-origin' con CORS está en el lado del servidor. Incluso si el servidor lo permite, el cliente no lo permitió. Por lo tanto, JSONP. –

+0

Jonathan, mira mi respuesta. La solución implica asegurarse de que la página de redirección tenga los encabezados de respuesta adecuados. – BigMacAttack

1

Un HTTP es tratado como cualquier otra página HTTP en el que también necesita los encabezados de control de acceso. Si su página de redirección no los tiene, el navegador nunca revisará si la página a la que se redirige tiene los permisos adecuados.

Junto con la cabecera Location en la página de redirección, también agregar el encabezado Access-Control-Allow-Origin y sus componentes relacionados (es decir, Access-Control-Allow-Methods etc.)

+2

hay mucha teoría en su respuesta ... un par de líneas de código para ilustrar lo que está diciendo no le hará daño – abbood

Cuestiones relacionadas