响应重定向(302)在角度中不起作用

时间:2019-04-11 20:25:47

标签: angular rest httprequest

我通过angular设计了SSO(单点登录)登录页面,并通过spring boot框架分别开发了登录服务。

在有角度的应用程序中,提交登录表单后,将通过HttpClient模块使用post-HttpMethod调用登录服务。在登录服务中,如果用户名和密码正确,则在登录服务的结果中,将响应状态设置为302,并在响应的标头中添加特定的URL。在这种情况下,我希望浏览器重定向到特定的URL,但这没有发生。

我在Firefox中跟踪请求和响应,与所附图片相同 Firefox network tab

  1. 发送登录后请求,其响应为302,并且标头位置是服务器响应中设置的特定URL
  2. 浏览器将选项请求发送到响应头的位置URL,并获得200个结果
  3. 浏览器将获取请求发送到目标URL(标头位置是特定的URL),此时浏览器未打开目标URL,正义响应为200。

我更改了响应的Location标头,发现重定向没有完成(只是登录请求和选项请求完成了),下图是请求跟踪。 Firefox network tab

1 个答案:

答案 0 :(得分:1)

我怀疑您的请求是XHR请求。如果是这样,浏览器将在处理程序中跟踪它们,但不会将整个页面导航到重定向位置。

如果您想模拟发送整页请求重定向时发生的情况,则可能需要更改后端,以使其在有效负载中返回带有原始重定向目标位置的200,然后重新加载页面转到该位置(类似window.location = payload.redirectLocation)。

您还可以摆脱重定向,根据身份验证成功让后端返回200或401,然后使用角度路由器导航。