Как включить перенаправление пользовательского интерфейса браузера из бэкэнда при вызове http rest?

Я погуглил и прочитал несколько статей, чтобы найти решение для перенаправления страницы пользовательского интерфейса в браузере на другую страницу из серверной службы. У меня нет того, что я ищу, поэтому, задавая этот вопрос в надежде, я получу решение. :)

Мое требование: у меня есть три службы, работающие на трех разных портах, как показано ниже:

appA, разработанное в angular, работает на http://localhost:4000.

loginPage разработан в angular и работает на http://localhost:4200

Сервер авторизации, разработанный на Golang, работает по адресу http://locahost:8080.

Я запустил приложение appA в браузере, а затем нажал кнопку входа в систему, которая перенаправляется на страницу входа в приложение. теперь на странице входа в систему пользователь предоставляет учетные данные, а при нажатии кнопки angular выполняет внутренний http-вызов на сервер авторизации для проверки пользователя.

После успешной проверки учетных данных служба авторизации (остальная конечная точка) перенаправляет эту страницу входа на домашнюю страницу приложения appA на стороне браузера.

Проблема

После успешной проверки учетных данных служба авторизации перенаправляет loginPage на домашнюю страницу приложения appA, я вижу это на вкладке сети браузера, но страница браузера не перезагружается по перенаправленному URL-адресу.

Мое требование - загрузить перенаправленный URL-адрес в браузере.

Вопрос Ниже приведен мой вопрос:

  1. Можно ли перенаправить URL-адрес браузера с одной точки на другую или нет.
  2. Если да, пожалуйста, дайте мне знать решение. Я пробовал подход httpInterceptor в angular. Здесь также мы перезагружаем страницу с угловым кодом, а не со стороны бэкэнда. Так что это не то, что я ищу.
  3. Если нет, то как в других местах они этого добились.

Например: я хочу войти в приложение makeMytrip, используя учетную запись Google. там мы перенаправляемся на страницу входа в Google, а после аутентификации Google перенаправляет обратно на домашнюю страницу makeMytrip.

ПРИМЕЧАНИЕ:

Протокол OAuth2 полностью основан на нем. как они этого достигли.

Я также не хочу использовать подход отправки формы, который имеет свои ограничения.

Поскольку этот сценарий используется в нескольких местах в реальном мире. Пожалуйста, помогите мне найти правильное принятое решение вместо обходного пути или подхода взлома.


person Rohit    schedule 27.07.2021    source источник


Ответы (1)


Позволить API перенаправить внешний интерфейс — это довольно странная/необычная вещь.

Браузеры не будут автоматически следовать перенаправлению, но вы можете вручную прочитать заголовок Location объекта ответа и вручную обновить document.href.

person Evert    schedule 04.08.2021
comment
Спасибо Эверт за ответ. Но я не могу перехватить перенаправленный URL. Даже я использую перехватчик http в angular, все равно не работает. Http Interceptor может перехватывать только ответ перенаправленного URL-адреса. После этого я не хочу перезагружать страницу. это должно было произойти при первом вызове. - person Rohit; 04.08.2021
comment
fetch() имеет возможность установить, хотите ли вы следовать перенаправлениям или нет. Вы захотите отключить это, чтобы вы могли обрабатывать перенаправление вручную. У вас есть эта опция в Angular? - person Evert; 04.08.2021
comment
Я также пробовал подход fetch (), но все та же проблема. fetch(URL, {метод: 'GET', перенаправление: 'follow'}): происходит перенаправление, но страница не перезагружается по перенаправленному URL-адресу. fetch(URL, {метод: 'GET', перенаправление: 'manual'}): автоматическое перенаправление не происходит в пользовательском интерфейсе на перенаправленном URL-адресе. Но также нет способа узнать на стороне пользовательского интерфейса, какой URL-адрес перенаправления, на который был перенаправлен бэкэнд. - person Rohit; 06.08.2021
comment
Ссылка: stackoverflow.com/questions/52666207/ - person Rohit; 06.08.2021