2012-09-12 42 views
5

Tengo una llamada AJAX a un punto final del servidor que hace una redirección 301 a la misma página, pero con una barra inclinada.301 redirigir a AJAX - redirigido?

¿El navegador sigue los redireccionamientos cuando se lo llama con AJAX o los ignora? En mi caso, no los sigue, pero pensé que podría ser algo de la configuración del servidor.

Respuesta

4

Si está utilizando jquery, puede consultar las siguientes preguntas para implementarlo. Por defecto jQuery (y la mayoría de las bibliotecas con Ajax) no siguen redirige de forma predeterminada:

How to manage a redirect request after a jQuery Ajax call

How to prevent ajax requests to follow redirects using jQuery

handle jquery ajax redirect

+1

OK, así que jQuery no sigue redirecciones, ya veo. Gracias. –

+7

Um, no. XHR seguirá de forma transparente los redireccionamientos. –

+1

No en todos los casos. Tengo una configuración de redirección 301 y FF no los sigue. Chrome lo hace, sin embargo. – threejeez

3

Quizás esta respuesta es un poco tarde pero que tenía el mismo problema con la respuesta 301 en la solicitud ajax. La solución era muy simple: regla de reescritura

Apache es algo como esto:

RewriteRule ^([^/]\w+)/?$ index.php?%{QUERY_STRING} [L,E=MODULE:$1] 

Su XHR-solicitud de URL se ve calle detrás de esta manera:

/this/is/a/canonical/url + '?param=1&param=2...' 

Esto llevará a la 301 movido permanentemente si no utiliza una llamada de archivo directa (fi * .php) y reescribe a la URL canónica (parece una ruta de directorio sin fi * .php) en su lugar.

Para resolver este problema sólo tiene que añadir un/a su XHR-Request-URL como esta:

/this/is/a/canonical/url + '/' + '?param=1&param=2...' 

Tal vez esto ayude a alguien.

+0

Esto lo arregló para mí, gracias –

-1

De acuerdo con el API doc de jQuery (http://api.jquery.com/jQuery.ajax/), async:false (también conocido como modo de sincronización) no es compatible con solicitudes de dominios cruzados y dataType: "jsonp".

+2

Lo sentimos, pero ¿qué tiene esto que ver con la pregunta? –

+0

@EduardLuca Lo siento, su redireccionamiento no cruza el dominio. – GlacJAY

+0

No necesito cruzar a otro dominio, la redirección ocurre en la misma URL pero con una barra al final. –

2

También tuve este problema y la sugerencia sobre la barra final me hizo pensar ... Tenía una regla de reescritura en mi Web.Config para hacer todo en minúscula y eso es lo que estaba estropeando mi llamada AJAX. Iba a GetResults (que aparecía como 301) y mi reescritura (por alguna razón desconocida?) Lo cambiaba a un get get de menores resultados que dio como resultado un 404.

Espero que esto pueda ayudar a alguien más.

Cuestiones relacionadas