Хорошо, похоже, я ошибся с первоначальным вопросом. Итак, вот некоторые исправления. Ответ по-прежнему актуален, потому что второе перенаправление останавливается при изменении протокола на HTTPS (SSL).
В моем случае перенаправление происходит несколько раз, и браузер не выполняет второе перенаправление. Выполняется первая переадресация, но возвращается ошибка.
Я продолжаю читать, что ответы JavaScript AJAX, содержащие перенаправления, выполняются автоматически, но, похоже, не в моем случае. За первым перенаправлением автоматически следует браузер, а первое перенаправление возвращается без выполнения второго перенаправления в заголовке. Моя проблема в том, что я хочу, чтобы все перенаправления выполнялись автоматически браузером.
Перенаправления являются частью библиотеки phpCAS. У меня есть API, написанный на PHP, который каждый раз проверяет аутентификацию пользователя перед возвратом результатов.
Вот последовательность. Главное отметить, что браузер возвращает второй ответ после 1 перенаправления. Я бы предпочел, чтобы он шел до конца и возвращал последний ответ, когда я выполняю AJAX-вызов localhost/example/api
.
localhost / example
- Вызывает
localhost/example/api
с использованием jQuery.ajax ()
Ответ 1: localhost / example / api
- Перенаправляет на
https://localhost/accounts/cas/login?service=api.example.com&gateway=true
(с использованием SSL).
Ответ 2: (SSL) localhost / accounts / cas / login? service = api.example.com & gateway = true
- Когда присутствует ключ запроса «шлюз», вход в систему просто перенаправляет обратно на URL-адрес, предоставленный ключом «службы» с билетом или без него (чтобы сигнализировать службе о том, что пользователь либо вошел в систему, либо нет).
Ответ 3: localhost / api? ticket = TICKET
- Проверяет билет и перенаправляет обратно на себя без билета.
Ответ 4: localhost / api
- На этот раз клиент CAS смотрит на $ _SESSION, чтобы запомнить, какой был билет, а затем обрабатывает запрос API, возвращающий JSONP.
Нет особой причины, по которой я использую CAS поверх OpenID или OpenAuth (orization). CAS был только первым модулем аутентификации, который мне удалось запустить в WordPress. Я открыт для предложений относительно использования другой библиотеки аутентификации, CMS, фреймворка и т. Д. Хотя я надеюсь просто завершить этот проект. Так что чем меньше переоборудования, тем лучше.