2012-09-12 20 views
5

Ho una chiamata AJAX a un endpoint del server che esegue un reindirizzamento 301 alla stessa pagina, ma con una barra finale.301 reindirizzamento su AJAX - reindirizzato?

Il browser segue i reindirizzamenti quando viene chiamato con AJAX o li ignora? Nel mio caso non li segue, ma ho pensato che potrebbe essere qualcosa dalla configurazione del server.

risposta

4

Se si utilizza jquery, è possibile esaminare le domande seguenti per implementarlo. Di default jQuery (e la maggior parte delle biblioteche con Ajax) non seguono reindirizza in modo predefinito:

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, quindi jQuery non segue i reindirizzamenti, vedo. Grazie. –

+7

Ehm, no. XHR seguirà in modo trasparente i reindirizzamenti. –

+1

Non in tutti i casi. Ho un setup di reindirizzamento 301 e FF non li segue. Chrome, tuttavia. – threejeez

3

Forse questa risposta è un po 'in ritardo, ma ho avuto lo stesso problema con la risposta 301 su richiesta Ajax. La soluzione è stata abbastanza semplice: regola di riscrittura

apache è qualcosa di simile:

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

tuo XHR-richiesta URL sembra someting in questo modo:

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

E porterà al 301 spostato in modo permanente se non usi una chiamata di file diretta (fi * .php) e riscrivi l'URL canonico (sembra invece un percorso di directory senza fi * .php).

per risolvere questo problema è sufficiente aggiungere un/al vostro XHR-Request-URL come questo:

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

Forse questo aiuterà qualcuno.

+0

Ho risolto il problema per me, grazie –

-1

secondo API doc di jQuery (http://api.jquery.com/jQuery.ajax/), async:false (aka. Modalità di sincronizzazione) non supporta cross-domain e dataType: "jsonp" richieste.

+2

Ci dispiace, ma cosa c'entra questo con la domanda? –

+0

@EduardLuca Mi dispiace, il tuo reindirizzamento non attraversa il dominio. – GlacJAY

+0

Non ho bisogno di passare a un altro dominio, il reindirizzamento avviene sullo stesso URL ma con una barra finale. –

2

Avevo anche questo problema e il suggerimento sullo slash finale mi ha fatto pensare ... Ho avuto una regola di riscrittura nel mio Web.Config per rendere tutto in minuscolo e questo è ciò che stava rovinando la mia chiamata AJAX. Stavo postando per GetResults (che si presentava come un 301) e il mio rewriter (per qualche ragione sconosciuta?) Lo stava cambiando a getresults GET inferiore che ha portato a un 404.

Spero che questo possa aiutare qualcun altro.

Problemi correlati