перенаправление ответа (302) не работает в угловых - PullRequest
1 голос
/ 11 апреля 2019

Я разработал страницу входа в систему единого входа (SSO) с помощью angular и службы входа, разработанные отдельно с помощью платформы весенней загрузки.

В угловом приложении, когда отправляется форма входа, вызов службы входа с помощьюpost-HttpMethod модулем HttpClient.В сервисе входа в систему, если имя пользователя и пароль верны, то в результате услуги входа в систему установите статус ответа на 302 и добавьте конкретный URL-адрес в заголовок ответа.в этом сценарии я ожидаю, что браузер перенаправит на определенный URL, но этого не происходит.

Я отслеживаю запрос и ответ в Firefox так же, как прикрепленное изображение Firefox network tab.

  1. Отправьте запрос после входа в систему, и ответом на него будет 302, а местоположение заголовка - это определенный URL-адрес, указанный в ответе сервера.
  2. Браузер отправляет запрос опции на URL-адрес местоположения ответа.заголовок и получает результат 200
  3. Браузер отправляет запрос на получение целевого URL-адреса (местоположение заголовка - это конкретный URL-адрес), в этот момент браузер не открывает целевой URL-адрес, а просто ответом является 200.

Я изменил заголовок Location в ответе и увидел, что перенаправление не выполняется (только запрос на вход в систему и запрос на выполнение опции), ниже изображение - трассировка запроса.Firefox network tab

1 Ответ

1 голос
/ 12 апреля 2019

Я подозреваю, что ваши запросы являются запросами XHR. Если это так, браузер следует за ними в обработчике, но не будет перемещать всю страницу в место перенаправления.

Если вы хотите подражать тому, что происходит, когда перенаправление отправляется для запроса на полную страницу, вы можете изменить свой бэкэнд так, чтобы он возвращал 200 с целевым местоположением исходного перенаправления в полезной нагрузке, а затем перезагрузить страницу к этому месту (что-то вроде window.location = payload.redirectLocation).

Вы также можете избавиться от перенаправления, позволить бэкенду вернуть 200 или 401 в зависимости от успешности аутентификации, а затем перемещаться по угловому маршрутизатору.

...