【问题标题】:Retrieving Headers from 302 (redirect) response in angular 4.3+从角度 4.3+ 中的 302(重定向)响应中检索标头
【发布时间】: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 响应中的位置标头?我可以下载某种插件或节点模块来帮助我实现这一目标吗?

【问题讨论】:

标签: angular httpclient node-modules http-status-code-302


【解决方案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/

状态代码部分

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2017-11-15
    • 2012-04-23
    • 1970-01-01
    相关资源
    最近更新 更多