【问题标题】:Getting JSON for Angular 2 from HTTP remote server fails, but succeeds localy从 HTTP 远程服务器获取 Angular 2 的 JSON 失败,但在本地成功
【发布时间】:2017-07-12 05:15:01
【问题描述】:

我正在尝试使用 Angular2 中的 htttp.get 读取 JSON 文件。

当我在我的项目中使用 localy 存储的文件时,它可以正常工作

但是 - 当我使用 远程服务器,与 完全相同 相同的文件时,我收到以下错误:

404 - Not Found 未找到集合“未定义”

浏览到http://example.com/my.json,我可以在任何浏览器上看到该文件。

这是我获取文件的打字稿代码:

private url = '../my.json';   <--- This works
private url = 'http://example.com/my.json';   <--- This throws the error


return this.http.get(this.url)
                    .map(this.extractData)
                    .catch(this.handleError);

提前致谢。

【问题讨论】:

  • 这不是角度的问题。这是服务器端/后端问题。您不应该以这种方式提供 json。
  • @IgorJanković 你能解释一下吗?
  • 你在服务器端使用什么语言?
  • @IgorJanković 没有语言...它只是一个位于站点目录下的 JSON 文件。
  • 你在浏览器上输入URL成功获取json文件了吗?它会响应您预期的 json 吗?

标签: angular angular-http


【解决方案1】:

Not found collection错误提示你之前使用过angular-in-memory-web-api。您需要从您的项目中删除与此相关的所有内容,这相当于从您的 NgModule 中的 imports 中删除以下内容:

InMemoryWebApiModule.forRoot(InMemoryDataService)

这样您就可以使用外部 api 和 db。

否则您的代码不应更改,但如果您愿意,关注this tutorial 应该会帮助您。

【讨论】:

  • 顺便说一句:现在我得到一个 0 - {"isTrusted":true} 的响应,在 chrome dev 中我看到:对预检请求的响应没有通过访问控制检查:没有 'Access-Control-请求的资源上存在 Allow-Origin' 标头。有什么想法吗?
  • 那是api端的问题。您需要设置访问权限。不知道你用什么,当我使用php时,我在服务器端添加header('Access-Control-Allow-Origin: *');。根据您的后端,您需要检查如何设置它。如果这只是一个测试,您可能需要在浏览器中启用 cors。但是对于“更好的解决方案”,您需要深入研究如何在您的 api 中允许 cors。
  • 不客气!很高兴我能帮助你!你也有美好的一天,快乐的编码! :)
  • 刚刚解决了问题。我觉得太棒了。 AJT——爱你,伙计。来自以色列的和平与爱。
  • 是的,每当你解决一个问题时,你都会觉得自己像个赢家 :D 来自芬兰暴风雪寒冷的地狱般的地狱 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
  • 2019-04-06
  • 2020-10-10
  • 1970-01-01
  • 2020-07-20
  • 2018-11-30
相关资源
最近更新 更多