我有一个We.net API服务工作正常。当我想从Angularjs App.browser控制台获取数据时给了我这个错误。
getCurrentFeed() :Observable<Tweet[]>{
return this.http.get('http://localhost:6010/GetTweets').map((resp :Response)=>{
console.log(resp.json());
var fetchedTweets=[];
for(let tweet of resp.json().data)
{
fetchedTweets.push(this.getTweetFromJson(tweet));
}
return fetchedTweets as Array<Tweet>;
});
}
XMLHttpRequest无法加载http://localhost:6010/GetTweets。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:4200”访问。 error_handler.js:54 EXCEPTION:响应状态:URL为0:null
答案 0 :(得分:0)
由于您的客户端应用程序由在端口4200上运行的开发服务器提供服务,因此不允许客户端访问其他服务器,除非它们专门配置为允许访问您的客户端。
在开发模式下,您不必配置服务器的标头。只需在客户端上配置一个简单的代理。使用以下内容在项目的根目录中创建文件proxy-conf.json:
{
"/GetTweets": {
"target": "http://localhost:6010",
"secure": false
}
}
然后从代码中删除完整的DNS名称
this.http.get('/GetTweets')
最后,按如下方式运行您的应用:
ng serve --proxy-config proxy-conf.json
在4200上运行的服务器会将URL中包含/ GetTweets的get请求重定向到在6010上运行的服务器,并且您不会收到此错误。