angular - 响应重定向(302)在角度不起作用
问题描述
我通过angular设计了一个SSO(Single Sign-On)的登录页面,以及由spring boot框架单独开发的登录服务。
在 Angular 应用程序中,当提交登录表单时,通过 HttpClient 模块使用 post-HttpMethod 调用登录服务。在登录服务中,如果用户名和密码正确,则在登录服务的结果中,将响应状态设置为 302,并在响应的标头中添加特定的 URL。在这种情况下,我希望浏览器重定向到特定的 URL,但这并没有发生。
- 发送登录后请求,其响应为 302,标头位置为服务器响应中设置的特定 URL
- 浏览器向响应头的位置 URL 发送选项请求并获得 200 结果
- 浏览器向目标 URL 发送 get 请求(header location 为特定 URL),此时浏览器并没有打开目标 URL,只是响应为 200。
解决方案
我怀疑您的请求是 XHR 请求。如果是这样,浏览器会在处理程序中跟随它们,但不会将整个页面导航到重定向位置。
如果您想模拟为整个页面请求发送重定向时发生的情况,您可能需要更改后端,以便它返回 200,其中包含有效负载中原始重定向的目标位置,然后将页面重新加载到该位置位置(类似window.location = payload.redirectLocation
)。
您还可以摆脱重定向,让后端根据身份验证成功返回 200 或 401,然后使用角度路由器导航。
推荐阅读
- ruby-on-rails-4 - Rabbit MQ 消息卡在就绪状态
- oracle - PL/SQL 触发器不适用于全新插入的数据
- postgresql - 将数据加载到 postgreSQL 数据库中
- powershell - 试图找出一个脚本来使用powershell在本地网络上停止特定用户下的进程
- java - 如何将二进制/八位字节流 s3 内容保存/压缩到 zip
- r - 数数。R中每组按顺序连续出现
- apache-spark - 在 pyspark 中创建相互依赖的列
- ajax - WP 使用 Ajax 更新 post_meta 关联数组
- python - 断言错误测试类中的属性和方法
- java - 在打开应用程序之前显示模式锁定活动