Angular 2休息服务请求

时间:2017-06-26 17:00:51

标签: angular rest angular2-services

我有一个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

1 个答案:

答案 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上运行的服务器,并且您不会收到此错误。