我访问JSON本地文件时出现Cors错误

时间:2017-09-01 16:41:01

标签: javascript angularjs json ajax

我在尝试访问本地JSON文件时遇到错误。这是我从json中获取数据的函数。

        $scope.getJSON = function () {
        (self.servicioObj = jsonFactory.GetJson('data.json')).then(
                function (dataResponse) {
                    $scope.datosJson = [];
                    $scope.datosJson = dataResponse.data;
                    self.servicioObj.detenerTiempo();
                }, function (error) {
            self.servicioObj.detenerTiempo();
        });
    }

这是我的工厂代码。

    function jsonFactory($http, $q) {

    var self = this;

    self.urlBase = 'http://192.168.0.17:8383/NewFrontEnd/app/pages/';
    self.jsonFactory = {};
    self.tiempoEspera = 120000;
    self.jsonFactory.GetJson = function (metodo) {
        var tiempo = $q.defer();
        var url = self.urlBase + metodo;
        var peticion = $http({
            method: 'get',
            url: url,
            headers: {'Access-Control-Allow-Origin': '*'},
            cache: false,
            timeout: tiempo.promise
        });
      return self.jsonFactory;
      }

当我调用getJSON函数时,我收到此错误消息。

XMLHttpRequest cannot load http://192.168.0.17:8383/NewFrontEnd/app/pages/data.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8383' is therefore not allowed access.

我不知道为什么我收到这个错误如果我放入urlBase localhost而不是192.168.0.17我可以毫无问题地访问JSON文件

1 个答案:

答案 0 :(得分:2)

  

如果我输入urlBase localhost而不是192.168.0.17,为什么我会收到此错误

由于localhost192.168.0.17是不同的主机名,因此它们的来源不同。

如果您将HTML文档加载到一个并使用XHR请求另一个,您将发出跨源请求。

要么不混合原点,要么配置服务器以输出相应的Access-Control-Allow-Origin标题。