我花了大约24小时搜索并尝试在堆栈溢出和其他各种来源上找到的不同解决方案无济于事。
这是我的问题陈述。
使用SPA应用程序时,您显然需要在使用JWT时使用隐式授权。这很好,但是,我可以检索此JWT的唯一方法是使用有效负载或url Params发出包含特定信息(客户端ID,令牌类型等)的POST或GET请求。端点(成功时)以302状态响应,并且Location头包含我需要发出API请求的访问令牌。
从目前为止我所看到的,Angular似乎没有办法拦截302重定向。我已经尝试创建自己的拦截器服务(我最接近的是在页面被重定向后的200响应)。
我已经尝试在我的get / post请求中添加“observe:'response'”选项,但是Location头不再存在,它从不显示302(即使我可以在我的调试控制台中看到它)。
我已经验证它不是CORS问题,因为在代理上,expose headers选项设置为位置值。
我能做的唯一一件事就是使用iframe并在iframe上监听重定向。但我不想这样做,因为它很笨重而且不总是可靠的。
有人可以告诉我有没有办法在使用Angular的Httpclient的GET / POST请求的302响应中捕获,拦截或查看位置标头?我可以下载某种插件或节点模块来帮助我实现这一目标吗?
答案 0 :(得分:0)
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/
状态代码部分