为啥我在角度请求中收到此错误? (CORS)

Posted

技术标签:

【中文标题】为啥我在角度请求中收到此错误? (CORS)【英文标题】:Why do I receive this error in an angular request? (CORS)为什么我在角度请求中收到此错误? (CORS) 【发布时间】:2018-04-25 10:43:04 【问题描述】:

我有这个控制器

import  Component  from '@angular/core';
import  Router  from '@angular/router';
import  HttpClient  from '@angular/common/http';

@Component(
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
)
export class AppComponent 

  url: string;

  constructor(private http: HttpClient)
    this.url = 'https://stats.nba.com/stats/leaguedashplayerbiostats?PerMode=Totals&LeagueID=00&Season=2017-18&SeasonType=Regular Season';

    this.http.get(this.url,)
      .subscribe(/*data => */
        data => 
          console.log("HOLA");
        ,
        err => 
          console.log("Error occured.")
    );
  

这是对 NBA API Stats 的请求,如果我在 Postman 中执行,我会看到所有数据,但如果我使用 Angular 4 执行,我会在 Chrome 开发者工具中看到下一个错误

加载失败 https://stats.nba.com/stats/leaguedashplayerbiostats?PerMode=Totals&LeagueID=00&Season=2017-18&SeasonType=Regular%20Season: 请求中不存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:4200” 访问。

我正在使用命令ng serve 运行服务器

我尝试了很多我在网上阅读的解决方案,但我认为唯一的解决方案是在后端进行更改

【问题讨论】:

是的,你之前已经问过这个问题,而且你已经得到了回应。 几乎就像错误所说的服务器没有设置“Access-Control-Allow-Origin”。 如果您想知道为什么它不像邮递员那样失败,请参阅此问题:github.com/bttmly/nba/issues/34 【参考方案1】:

是的,您需要从您的站点配置服务器以使用 CORS。

为什么 Postman 可以正常工作?因为它不是浏览器。您完全控制邮递员的整个请求。

但是当你使用浏览器时,它会使用一些特定的方法来避免像 CSRF 这样的攻击。

【讨论】:

以上是关于为啥我在角度请求中收到此错误? (CORS)的主要内容,如果未能解决你的问题,请参考以下文章

当 OPTIONS 请求的 statusCode 为 200 时,为啥我会在 API Gateway GET 请求中收到 CORS 错误?

为啥我在 Django 中使用此调用从 Paypal 收到“内部错误”?

ReactJS 发送 GET 请求,响应 302 重定向,收到 CORS 错误

带有 Google 的 OAuth2 - CORS 错误(Angular + Spring boot)[重复]

为啥我在尝试在 iOS Swift 中向服务器发出 post 请求时收到此错误:在展开 Optional 值时意外发现 nil?

即使我允许所有来源,为啥我会收到 CORS 错误?