当前位置: 首页 > 知识库问答 >
问题:

我如何使用角度误差处理获得控制台上出现的CORS误差?

简培
2023-03-14

我已经把我自己的小错误处理程序放在一起来处理REST服务器上的HttpErrorACK,但是我注意到客户端出现了问题,Angular正在将它们包装为HttpErrorACK的一部分,该部分会传递给我的错误处理程序。

在控制台上,我首先看到这个:

CORS 策略已阻止从源“http://localhost:4200”以“http://localhost:8080/group”位置访问 XMLHttpRequest:当请求的凭据模式为“include”时,响应中“访问控制-允许-源”标头的值不得为通配符“*”。由 XMLHttpRequest 发起的请求的凭据模式由 withCredentials 属性控制。

在这种情况下,这是意料之中的,但是我希望我的错误处理程序记录这个错误,只是我不知道如何记录。这是使用时的处理程序:

 getGroups(): Observable<Group[]> {
    return this.http.get<Group[]>(`${this.restUrl}/group`).pipe(
        catchError(
            error => this.errorService.handleError<Group[]>(
                                    error, 'getGroups', [])
          )
      );
  }

我的错误服务:

  handleError<T>(
      error: HttpErrorResponse,
      operation = 'operation',
      result?: T) {
    this.messageService.add(`${operation} failed`);
    this.messageService.add(`HTTP error response: status[${error.status}];
                error.message:"${error.message}"`);
    this.messageService.add(`Is ErrorEvent? 
                ${error.error instanceof ErrorEvent ? "yes":"no"}`);
    this.messageService.add(`Is ProgressEvent? 
                ${error.error instanceof ProgressEvent ? "yes":"no"}`);

    return of(result as T);
  }

所以Angular HttpClient很有希望包装了这个错误——或者完全取代了它。我能在我的错误处理器中得到它吗?

我的错误处理程序的输出是:

getGroups failed
HTTP error response: status[0]; error.message:"Http failure response for http://localhost:8080/group: 0 Unknown Error"
Is ErrorEvent? no
Is ProgressEvent? yes

我看不出我能用ProgressEvent做些什么。

[2019-02-28] 更新

正如Anjil在评论中所说,此CORS错误不是HTTP错误。它被什么东西扔到某个地方 - 我不知道是什么。可能是浏览器,可能是Angular,RxJS,HttpClient。

共有1个答案

郝原
2023-03-14

您可以尝试如下代码

getGroups(): Observable<Group[]> {
return this.http.get<Group[]>(`${this.restUrl}/group`).subscribe(
    results => {
      console.log(results)
    },
    err => {
      // Do stuff whith your error
      this.displayError(err);
    },
    () => {
      // Do stuff after completion
    }
  )
}

private displayError(ex): void {
    console.log(ex);
}
 类似资料:
  • 我想要Express服务器端重定向角度页面 我在localhost:3000处运行express 在localhot:4200处运行angular 当express重定向到angular localhost时:4200 我总是收到错误 如何让角接受cors响应?

  • 当我上传一个新版本到Google Play控制台时,我得到以下消息。 null null

  • 我从angular调用这个API,但我在飞行前请求上得到了CORS错误。我什么都试过了,但不知道哪里出错了。你知道吗?

  • 问题内容: 这是一个很长的路,但是以前有人见过这个错误吗?我正在尝试使用express,angular和mongoDB添加“ Transporters”。每当我访问由transporters控制器控制的页面时,都会收到此错误: 运输者控制器如下所示: 在我看来,我调用该列表并创建方法。他们产生上述错误 我从ng:areq的有角文档中得到了这个,尽管仍然不知道发生了什么 AngularJS经常断言,

  • 控制台错误png我们一直试图通过使用以下代码打印特定网站的控制台错误。但是我们无法捕捉控制台错误。有人能给出快速响应吗 代码行: 错误: 代码行: 错误: 代码块:

  • 您好,我正在尝试从本地主机角度应用程序将图像上传到cloudinary api,并出现以下错误 访问位于“”的XMLHttpRequesthttps://api.cloudinary.com/v1_1/xxxxxx/image/upload“起源”http://localhost:4200'已被CORS策略阻止:飞行前响应中的访问控制允许标头不允许请求标头字段类型。 我的角形式和超文本传输协议请求