从角度 4.3+ 中的 302(重定向)响应中检索标头
Posted
技术标签:
【中文标题】从角度 4.3+ 中的 302(重定向)响应中检索标头【英文标题】:Retrieving Headers from 302 (redirect) response in angular 4.3+ 【发布时间】: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 响应中的位置标头?我可以下载某种插件或节点模块来帮助我实现这一目标吗?
【问题讨论】:
也许你想看看***.com/questions/36885556/… 据我所知,这是一个服务器端问题。也许解决这个问题的唯一方法是让服务器将重定向标志添加到 url,然后在客户端相应地处理它作为短期修复。见:airbrake.io/blog/http-errors/302-found 【参考方案1】:302 状态码 - URL 重定向将由浏览器直接处理。 Angular2 http 客户端不会收到此事件。
尝试使用 Jquery 脚本调用
$.ajax(
url: "service call URL",
dataType: "script",
crossDomain: true,//if needed
statusCode:
302: function()
alert( "redirect" );
success: function()
);
http://api.jquery.com/jquery.ajax/
状态代码部分
【讨论】:
以上是关于从角度 4.3+ 中的 302(重定向)响应中检索标头的主要内容,如果未能解决你的问题,请参考以下文章