【问题标题】:Cors error when i access to a JSON local file访问 JSON 本地文件时出现 Cors 错误
【发布时间】:2017-09-01 16:41:01
【问题描述】:

我在尝试访问本地 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 文件

【问题讨论】:

  • 你的问题是什么?
  • 如果我输入 urlBase localhost 而不是 192.168.0.17 我不知道为什么会出现此错误,我可以毫无问题地访问 JSON 文件
  • 它与浏览器保护来自与请求资源不同来源的请求有关
  • 我该如何解决呢?我无法放置标头,因为我没有尝试访问后端服务器

标签: javascript angularjs json ajax


【解决方案1】:

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

因为localhost192.168.0.17 是不同的主机名,所以它们是不同的来源。

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

不要混合来源或配置服务器以输出适当的Access-Control-Allow-Origin 标头。

【讨论】:

  • 所以我需要放置 localhost 而不是 192.168.0.17?我需要,因为我需要其他用户连接到我的 ip 并访问 json 文件
  • 您有三个选择。要么在任何地方使用localhost,要么在任何地方使用192.168.0.17,或者在你的服务器上设置CORS。您已取消选项 1。使用其他两个选项之一。
  • 但是我项目的本地json文件JSON不在服务器端,有什么解决方案吗?
  • 如果不在服务器上,为什么要使用以http://开头的URL?
  • 我在 netbeans 中运行项目,当我运行项目时 url 是 localhost:8383 所以我需要配置 netbeans 的服务器?
猜你喜欢
  • 2020-08-03
  • 2015-09-24
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
  • 2017-04-24
  • 2019-06-28
  • 2021-10-30
  • 2021-09-24
相关资源
最近更新 更多