如何处理302重定向到返回text / html而不是application / json的页面?

时间:2019-06-13 14:37:12

标签: angular angular-httpclient angular-http-interceptors

我正在尝试使用Angular HttpClient来调用REST服务。

但是,在我的客户端和后端之间,存在一个身份验证层,该层正在检查所有请求以获取有效的身份验证令牌。如果该令牌不存在,则代理将发出302响应,将我的请求重定向到text/html登录页面。

我知道这很奇怪,但是我无法控制此层及其功能,我只是尝试使用HttpInterceptor接口查看响应有效内容并略过我确定某些关键字会在此text/html响应中出现。

我尝试了以下操作,只是看是否可以看到响应:

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request)
        .pipe(
            tap(console.log)
        );
}

但是我总是看到它作为输出:

{"type": 0}

如果我只是将{ responseType: 'text' as 'json' }添加到我的HttpClient电话中,即

,我 就能查看响应:

return this.httpClient.get<string>(
    'http://my/service',
    { responseType: 'text' as 'json' }
);

并在响应上调用.pipe(map(s => JSON.parse(s)))以从字符串创建对象,但这显然很笨重,容易出现问题,并且需要大量工作将其添加到HttpClient的所有用法中。 / p>

在我看来,如果有效载荷不是有效的JSON,Angular会自动删除/替换有效载荷,然后再使用拦截器查看它,除非我明确告诉我我的有效载荷实际上不是JSON。有什么方法可以让我在不需要拦截器的情况下检查拦截器中的有效载荷吗?

0 个答案:

没有答案