繁体   English   中英

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

[英]response redirection(302) not work in angular

我设计了一个angular的SSO(Single Sign-On)登录页面,以及spring boot框架单独开发的登录服务。

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

我在 Firefox 中跟踪请求和响应与附加图片相同Firefox 网络选项卡 .

  1. 发送登录后请求,响应为 302,头部位置为服务器响应中设置的特定 URL
  2. 浏览器向响应头的位置 URL 发送选项请求并获得 200 结果
  3. 浏览器向目标 URL 发送 get 请求(header 位置为具体 URL),此时浏览器并没有打开目标 URL,只是响应为 200。

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

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

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

您也可以去掉重定向,让后端根据认证成功返回 200 或 401,然后使用 angular 路由器进行导航。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM