我有这个控制器
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统计数据的请求,如果我在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
我尝试过很多在线阅读的解决方案,但我认为唯一的解决方案是在后端进行更改
答案 0 :(得分:2)
是的,您需要配置服务器以便从您的站点使用CORS。
为什么Postman工作正常?因为它不是浏览器。你完全控制邮差的整个请求。
但是当你使用浏览器时,它会使用一些特定的方法来避免像CSRF这样的攻击。