Ok, sembra che ho fatto un errore con la mia domanda iniziale. Quindi, ecco alcune correzioni. La risposta si applica ancora, poiché il secondo reindirizzamento viene interrotto quando si verifica una modifica del protocollo a HTTPS (SSL).Il browser non segue il reindirizzamento da una risposta AJAX (la risposta generata da PHP utilizza l'autenticazione CAS)
Nel mio caso, ho un reindirizzamento che si verifica più volte e il browser non segue il secondo reindirizzamento. Il primo reindirizzamento è seguito ma restituisce un errore.
Continuo a leggere che le risposte JavaScript AJAX contenenti i reindirizzamenti sono seguite automaticamente, ma sembra che non siano nel mio caso. Il primo reindirizzamento viene automaticamente seguito dal browser e il primo reindirizzamento viene restituito senza seguire il secondo reindirizzamento nell'intestazione. Il mio problema è che voglio che tutti i reindirizzamenti siano seguiti automaticamente dal browser.
I reindirizzamenti fanno parte della libreria phpCAS. Ho una API scritta in PHP che controlla l'autenticazione dell'utente, ogni volta, prima di restituire i risultati.
Ecco la sequenza. La cosa principale da notare è che il browser restituisce la seconda risposta, dopo aver seguito 1 reindirizzamento. Preferirei che fosse andato fino in fondo e restituito l'ultima risposta quando effettuo una chiamata AJAX allo localhost/example/api
.
localhost/example
- chiede
localhost/example/api
utilizzando jQuery.ajax()
Risposta 1: localhost/example/api
- Redirige a
https://localhost/accounts/cas/login?service=api.example.com&gateway=true
(usando SSL).
Risposta 2:? (SSL) localhost/account/CAS/login servizio = api.example.com & gateway = true
- Quando è presente la chiave di query 'gateway', la login reindirizza semplicemente all'URL fornito dalla chiave 'service' con o senza ticket (per segnalare al servizio che l'utente ha effettuato l'accesso o meno).
Risposta 3:? Localhost/api biglietto = BIGLIETTO
- Verifica il biglietto e reindirizza a se stessa, senza il biglietto.
Risposta 4: localhost/api
- Questa volta il cliente CAS guarda il $ _SESSION per ricordare ciò che il biglietto era, e quindi elabora la richiesta API ritorno JSONP.
Non c'è alcun motivo particolare che sto usando CAS su OpenID o OpenAuth (orization).CAS era solo il primo modulo di autenticazione che sono riuscito a lavorare su WordPress. Sono aperto a suggerimenti in termini di utilizzo di una diversa libreria di autenticazione, CMS, framework, ecc. Tuttavia, la mia speranza è di terminare questo progetto. Quindi meno ri-utensili e meglio è.
Cosa sai, ho postato questa domanda dopo aver cercato su StackOverflow per un po '. Quindi, dopo aver pubblicato la domanda, eseguo un'altra ricerca e trovo una domanda simile su StackOverflow. http://stackoverflow.com/questions/2961051/cas-authentication-and-redirects-with-jquery-ajax –
Sembra che la seconda risposta stia utilizzando un protocollo diverso (SSL) e il sottodominio sia diverso, quindi che rispetterebbe l'errore. Immagino che ciò significherebbe che il browser sta seguendo i reindirizzamenti, non solo quando qualcosa cambia (o prototocollo o sottodominio o entrambi?), E i dati non vengono restituiti nella risposta (altrimenti, forse una risposta JSONP potrebbe essere aggiunta a quel punto. .. Dovrò provarlo ... sigh.) –