我的Angular 2服务正在调用和外部api,但我在浏览器控制台中收到错误 . 我尝试将标头添加到Get方法,但仍然存在错误 .
服务
import { Injectable } from '@angular/core';
import { Http,Headers } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class CompetitionService{
constructor(private http:Http){
}
getCompetitions(){
let headers = new Headers();
headers.append('Access-Control-Allow-Credentials', 'true');
headers.append('Access-Control-Allow-Methods', 'GET');
headers.append('Access-Control-Allow-Origin', '*');
return this.http.get('http://api.football-data.org/v1/competitions',{headers:headers}).map(response => response.json())
}
}
控制台日志在 Headers 之前
XMLHttpRequest无法加载http://api.football-data.org/v1/competitions . 请求的资源上不存在“Access-Control-Allow-Origin”标头 . 因此不允许来源'http:// localhost:3000'访问 .
在Header XMLHttpRequest之后无法加载http://api.football-data.org/v1/competitions . 请求的资源上没有'Access-Control-Allow-Origin'标头 . 因此不允许原点'http://localhost:3000'访问 .
1 回答
这是浏览器和足球数据API中的CORS问题
http://api.football-data.org/docs/v1/index.html#_cors_handling
所以要从你的应用程序调用api,你需要添加 Headers :