【发布时间】:2018-08-13 23:47:45
【问题描述】:
对于 SPA 应用,您显然需要在使用 JWT 时使用隐式授权。这很好,但是,我可以检索此 JWT 的唯一方法是使用包含特定信息(客户端 ID、令牌类型等)的有效负载或 url 参数发出 POST 或 GET 请求。端点(成功时)响应 302 状态和 Location 标头,其中包含我发出 API 请求所需的访问令牌。
从我目前看到的情况来看,Angular 中似乎没有办法拦截 302 重定向。我尝试过创建自己的拦截器服务(我得到的最接近的是页面重定向后的 200 响应)。
我尝试在我的 get/post 请求中添加“observe:'response'”选项,但 Location 标头再次不存在并且它从不显示 302(即使我可以在我的调试控制台中看到它)。
我已验证这不是 CORS 问题,因为在代理上,公开标头选项设置为位置值。
我唯一能做的就是使用 iframe 并在 iframe 上监听重定向。但我不想这样做,因为它笨重而且并不总是可靠的。
有谁能告诉我,有没有办法使用 Angular 的 Httpclient 捕获、拦截或查看 GET/POST 请求的 302 响应中的位置标头?我可以下载某种插件或节点模块来帮助我实现这一目标吗?
【问题讨论】:
-
据我所知,这是一个服务器端问题。也许解决这个问题的唯一方法是让服务器将重定向标志添加到 url,然后在客户端相应地处理它作为短期修复。见:airbrake.io/blog/http-errors/302-found
标签: angular httpclient node-modules http-status-code-302