我无法在Angular中获得REST服务响应

时间:2017-02-09 13:35:24

标签: rest angular cors

在我们公司的VPN内部,我可以在FF和Chrome上调用Web服务(这是一项REST服务)。我需要从Angular 2连接到它。现在,我尝试以几种方式从Angular 2调用REST服务(在VPN内部),我总是收到有关CORS的消息(" No' Access-Control-Allow-Origin&# 39;标题出现在请求的资源上。因此,来源' http://localhost:4200'不允许访问。响应的HTTP状态代码为401。"在Chrome和" Cross -Origin Request Blocked:同源策略禁止在http://webwassvc-test.servizi.gr-u.it/essigEAIM/rest/monitoring/integrations/all?pag=1读取远程资源。(原因:缺少CORS标题'Access-Control-Allow-Origin'。"在Firefox中)。我尝试将about:config:security.fileuri.strict_origin_policy设置为false,但它没有帮助。 REST服务器端的系统管理员告诉我他为CORS(跨域)呼叫打开了服务器,所以我认为问题出在我的最后,但我不知道它是什么。有什么建议吗?

更新:我可以通过PHP作为中间件(localhost / angular2_site / file.php)访问REST服务并从中获取数据,但不能直接从angular(localhost:4200)获取数据。

1 个答案:

答案 0 :(得分:1)

使用代理或负载均衡器管理它的另一个选择。

如果您正在使用anuglar-cli进行开发,则可以使用angular-cli的Proxy To Backend支持。 --proxy-config

来自angular-cli自述文件的

  

假设我们在http://localhost:3000/api上运行 api服务器,我们想要   所有拨打http://localhost:4200/api的电话都转到该服务器。

     

我们在项目package.json旁边创建一个名为proxy.conf.json的文件   内容

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false
  }
}
     

您可以在此处详细了解可用的选项   webpack-dev-server代理设置

     

然后我们将package.json文件的启动脚本编辑为

     

“start”:“ng serve --proxy-config proxy.conf.json”,现在运行它   npm start

因此,最后您可以将您的服务称为:

getUsers() : Observable<any>{
  return this.http.get('/api/users').map(res => res.json());
}