如何在 http 休息调用时从后端启用浏览器 UI 重定向?

问题描述

我用谷歌搜索并阅读了多篇文章,以找出将浏览器中的 UI 页面重定向到后端服务的另一个页面解决方案。我没有得到我想要的东西,所以希望这个问题,我会得到解决方案。 :)

我的要求: 我在三个不同的端口上运行了以下三个服务,如下所示:

appA 以 angular 开发,运行在 http://localhost:4000

loginPage 在 http://localhost:4200 上运行 angular 开发

授权服务器由Golang开发,运行在http://locahost:8080

我在浏览器中启动了应用程序 appA,然后单击重定向到应用程序登录页面登录按钮。现在在 loginPage 上,用户提供凭据并单击按钮,angular 在内部对授权服务器进行 http 调用以验证用户

凭据验证成功后,授权服务(其余端点)将该 loginPage 重定向到浏览器端的应用程序 appA 主页。

问题

凭据验证成功后,授权服务正在将 loginPage 重定向到应用程序 appA 主页,我可以在浏览器网络选项卡中看到这一点,但浏览器页面没有在重定向的 url 上重新加载。

我的要求是在浏览器上加载重定向的 url。

问题 以下是我的问题:

  1. 是否可以将浏览器 url 从一个重定向到另一个点。
  2. 如果是,请告诉我解决方案。我已经在 angular 中尝试了 httpInterceptor 方法在这里,我们也在用 angular 代码重新加载页面,而不是从后端发生。所以这不是我要找的。​​li>
  3. 如果没有,那么其他地方是如何实现的。

例如: 我想使用谷歌帐户登录 makeMytrip 应用程序。在那里我们重定向到谷歌登录页面,并在身份验证后,谷歌重定向回 makeMytrip 主页。

注意:

OAuth2 协议完全基于它。他们是如何实现的。

我也不想使用有自身限制的表单提交方法

由于此场景在现实世界中的多个地方使用。请帮助我找到正确的可接受的解决方案,而不是解决方法或黑客类型的方法

解决方法

让 API 重定向前端是一件奇怪/不寻常的事情。

浏览器不会自动跟随重定向,但您可以手动读取响应对象的 Location 标头并手动更新 document.href