无法从远程json加载数据

时间:2016-12-21 07:36:18

标签: angularjs json

我正在使用angularjs构建混合应用程序,我正在尝试从外部源调用该服务。但当我打电话给网址时,我收到了错误

XMLHttpRequest cannot load https:XXXX/xxx.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

这是我的代码

app.controller('overview', function($scope, $http) {
    $http({
        method : "GET",
        url : "https://ysaf.XXXX.yourcxxxxx/resource.json"
    }).then(function appSucces(response) {
        $scope.resources = response.data;
    }, function appError(response) {
        $scope.resources = response.statusText;
    });
});

如果我调用本地.json文件我没有收到任何错误,但是,只有当我调用外部api时,我才会收到此错误。

我在这段代码中有什么问题吗?

3 个答案:

答案 0 :(得分:0)

Access-Control-Allow-Origin设置在来自服务器的响应上,这不是客户端请求,以允许来自不同来源的客户端访问响应。

在这种情况下,https://ysaf.XXXX.yourcxxxxx/resource.json不允许您的来源有权访问回复。因此你无法阅读它。

答案 1 :(得分:0)

添加必需的标头,例如Access-Control-Allow-Origin: *

您面临的问题是CORS问题。 CORS - Cross Origin Resource Sharing

以下情况会发生CORS问题

1)如果我们是abc.com并访问xyz.com(不同的域名)

2)如果我们在http://localhost:8080/myapplication并访问http://localhost:9080/anotherapplication(不同的端口)

答案 2 :(得分:0)

您应该为您的开发下载此扩展程序:

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

它将解决所有Access-Control-Allow-Origin个问题:)

不要忘记在停止开发时禁用它,这可能是网页导航的问题。