跨域资源共享错误 (CORS) Angular 10

Posted

技术标签:

【中文标题】跨域资源共享错误 (CORS) Angular 10【英文标题】:Cross-Origin Resource Sharing Error (CORS) Angular 10 【发布时间】:2021-05-16 07:54:35 【问题描述】:

我使用 Angular 10(前端)和 Node.js(后端)制作了 Web 应用程序。但是当我通过添加标头发送请求时,它不起作用。 (关闭 CORS 并在 Chrome 上发送请求时有效) 我被发现在 *** 上缺少一些类似的答案,但不幸的是,这些对我不起作用:|

我发送请求如下,

getAllSubmissions() 
    let token = sessionStorage.getItem('auth-token');
    let path = this.globe.base_path + 'get-submissions';
    this.http.get<any>(path, headers:'Access-Control-Allow-Origin':'*', 'auth-token':token).toPromise().then(data => 
      this.allsubmissoinsFiltered = data.filter(sub => sub.status != 'active')
      this.allSubmissionsCount = this.allsubmissoinsFiltered.length;
    ).catch(err => 
      console.log(err)
    )
  

以及,我也在尝试以下代码,

getAllSubmissions() 
    let token = sessionStorage.getItem('auth-token');
    var header =  headers: new HttpHeaders().set('auth-token', token) 
    let path = this.globe.base_path + 'get-submissions';
    this.http.get<any>(path, header).toPromise().then(data => 
      this.allsubmissoinsFiltered = data.filter(sub => sub.status != 'active')
      this.allSubmissionsCount = this.allsubmissoinsFiltered.length;
    ).catch(err => 
      console.log(err)
    )
  

这两种类型都不能正常工作。显示错误如下,

我该如何解决这个问题?希望等待您的宝贵回复!

【问题讨论】:

有这样的问题和答案***.com/questions/64517800/… @BojanKogoj 它也不起作用:( 我已经解决了这个问题。这是由于自定义标题而发生的。 【参考方案1】:

由于使用Angular HTTPClient 设置的自定义标头导致此问题, 我将代码更改如下,

getAllSubmissions() 
    let token = sessionStorage.getItem('auth-token');
    var header =  headers: new HttpHeaders().set('Authorization', token) 
    let path = this.globe.base_path + 'get-submissions';
    this.http.get<any>(path, header).toPromise().then(data => 
      this.allsubmissoinsFiltered = data.filter(sub => sub.status != 'active')
      this.allSubmissionsCount = this.allsubmissoinsFiltered.length;
    ).catch(err => 
      console.log(err)
    )
  

注意:我还把后端头的名字改成了“Authorization”

现在它可以正常工作了。

【讨论】:

以上是关于跨域资源共享错误 (CORS) Angular 10的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular 和 NodeJs (CORS) 的跨域请求

如何使用 Joomla 作为服务器配置跨域资源共享 (CORS)?

禁止chrome中CORS跨域资源共享错误

如何在 Spring MVC 中为错误响应启用 CORS?

无法在 ASP.NET Core 1.0 中启用跨域请求 (CORS)

在 Angular 2 中使用基本身份验证预检 CORS 请求