javascript - Chrome 中完整的 Http 拦截器错误响应

标签 javascript angular angular5

我在 angular 5 中使用 httpinterceptor 时遇到了奇怪的问题。我无法在 Chrome 中获取错误响应和错误状态代码,但能够在 IE 中获取下面是我的 HttpInterceptor 代码。

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpResponse } 
from '@angular/common/http';
import { finalize, tap } from 'rxjs/operators';

@Injectable()
export class LoggingInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler) {
const startTime = Date.now();
let status: string;

return next.handle(req).pipe(
    tap(
      event => {
        status = '';
        if (event instanceof HttpResponse) {
          status = 'succeeded';
        }
      },
      error => {
        if(error instanceof HttpErrorResponse)  {
          console.log(error.error.message) 
          // Above message is printing in IE but no in chorme.
       }
     }
    ),
    finalize(() => {

    })
);
 }

} 

在上面的错误 block 中,我可以在 IE 中看到但在 Chrome 中看不到的消息和状态代码。请帮助我如何解决这个问题。

编辑: 我正在使用来自不同来源的数据,并且在 Web 服务中启用了 cors

最佳答案

我发现了这个问题,这是由于在服务器端没有为错误设置响应头。服务器在没有设置响应 header 的情况下直接为错误抛出异常。我在服务器端设置了响应 header ,现在我可以在 chrome 中看到错误消息。

我仍然对 IE 为何能够响应此错误感到困惑。

关于javascript - Chrome 中完整的 Http 拦截器错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51883045/

相关文章:

javascript - 使用 AngularJS 和 Symfony 2 进行在线/离线数据同步的最佳实践

angular - 从另一个 url-angular4 加载动态模块

javascript - *ng如果模板中未检测到更改

angular - 进行 Angular 内容投影的现代方法是什么?

javascript - 如何判断字符串是否是 'correctly' 编码为 Base64 的?

javascript - HTTP API 在 AWS Lambda 测试环境之外返回未定义的值

javascript - 一个关于jquery闭包的简单问题

javascript - Angular 6 + Universal Karma 测试导入模块

html - 如何使用角 Material 表添加多个标题行

angular - Angular 万能锤的使用方法