OK, wygląda na to, że popełniłem błąd przy pierwszym pytaniu. Oto kilka poprawek. Odpowiedź nadal obowiązuje, ponieważ drugie przekierowanie jest zatrzymywane, gdy następuje zmiana protokołu na HTTPS (SSL).Przeglądarka nie wykonuje przekierowania z odpowiedzi AJAX (odpowiedź generowana przez PHP używa uwierzytelniania CAS)
W moim przypadku wielokrotnie pojawia się przekierowanie, a przeglądarka nie wykonuje drugiego przekierowania. Pierwsze przekierowanie jest przestrzegane, ale zwraca błąd.
Ciągle czytam, że odpowiedzi JavaScript zawierające AJAX zawierające przekierowania są śledzone automatycznie, ale wygląda na to, że nie w moim przypadku. Po pierwszym przekierowaniu automatycznie następuje przeglądarka, a pierwsze przekierowanie jest zwracane bez następującego drugiego przekierowania w nagłówku. Mój problem polega na tym, że chcę, aby wszystkie przekierowania były automatycznie śledzone przez przeglądarkę.
Przekierowania są częścią biblioteki phpCAS. Mam API napisane w PHP, który sprawdza uwierzytelnianie użytkownika za każdym razem, przed zwróceniem wyników.
Oto kolejność. Najważniejszą rzeczą, na którą należy zwrócić uwagę, jest to, że przeglądarka zwraca drugą odpowiedź, po wykonaniu 1 przekierowania. Wolałbym, aby przeszedł całą procedurę i zwrócił ostatnią odpowiedź, gdy wykonuję wywołanie AJAX pod numerem localhost/example/api
.
localhost/przykład
- zwraca
localhost/example/api
pomocą jQuery.ajax()
reakcji 1 localhost/przykład/API
- przekierowuje do
https://localhost/accounts/cas/login?service=api.example.com&gateway=true
(stosując SSL).
Response 2: (SSL) localhost/Konta/CAS/zalogować service = api.example.com & bramy = true
- Gdy klucz zapytania 'bramy' jest obecny, login po prostu przekierowuje z powrotem do adresu URL dostarczonego przez klucz usługi z biletem lub bez niego (aby zasygnalizować, że użytkownik jest zalogowany lub nie).
Odpowiedź 3: localhost/api bilet = BILET
- Weryfikuje bilet i przekierowuje z powrotem do siebie bez biletu.
Response 4: localhost/api
- Tym razem klient CAS patrzy na $ _SESSION pamiętać, jaki był bilet, a następnie przetwarza żądanie API powrocie jsonp.
Nie ma żadnego szczególnego powodu, dla którego używam CAS przez OpenID lub OpenAuth (orization).CAS był tylko pierwszym modułem uwierzytelniającym, dzięki któremu mogłem pracować w WordPressie. Jestem otwarty na sugestie dotyczące korzystania z innej biblioteki uwierzytelniania, CMS, framework itp. Mam nadzieję, że właśnie zakończę ten projekt. Więc im mniej narzędzi ponownie, tym lepiej.
Co wiesz, wysłałem to pytanie po przeszukaniu przez StackOverflow na jakiś czas. Następnie po zamieszczeniu pytania wykonuję kolejne wyszukiwanie i znajduję podobne pytanie na StackOverflow. http://stackoverflow.com/questions/2961051/cas-authentication-and-redirects-with-jquery-ajax –
Wygląda na to, ponieważ druga odpowiedź używa innego protokołu (SSL), a subdomena jest inna, to spowodowałby błąd. Myślę, że to oznaczałoby, że przeglądarka śledzi przekierowania, ale nie wtedy, gdy coś się zmienia (prototocol? Lub subodmain? Lub oba?), A dane nie są zwracane w odpowiedzi (w przeciwnym razie być może odpowiedź JSONP mogłaby zostać dodana w tym momencie. ... Muszę to wypróbować ... wzdycham.) –