2017-09-01 29 views
-3

當我試圖訪問本地JSON文件時出現錯誤。這是我的功能,從json帶來的數據。Cors錯誤,當我訪問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代替192.168.0.17我可以訪問到JSON文件沒有任何問題

+1

你的問題是什麼? –

+0

我不知道爲什麼我得到這個錯誤,如果我把urlBase本地主機,而不是192.168.0.17我可以訪問JSON文件沒有任何問題 –

+0

它與瀏覽器保護請求來自不同來源的資源要求 –

回答

2

爲什麼我越來越爲什麼我得到這個錯誤這個錯誤,如果我把在本地主機urlBase代替192.168.0.17

因爲localhost192.168.0.17是不同的主機名,所以它們是不同的起源。

如果您將HTML文檔加載到一個文檔並使用XHR請求另一個,您將發出一個跨源請求。

要麼不混合起點,要麼將服務器配置爲輸出合適的Access-Control-Allow-Origin標頭。

+0

所以我需要把localhost而不是192.168.0.17?我需要,因爲我需要其他用戶連接到我的IP和訪問JSON文件 –

+0

你有三個選項。在任何地方使用'localhost'或在任何地方使用'192.168.0.17'或在服務器上設置CORS。你已經解僱了選項1.使用其他兩個之一。 – Quentin

+0

但我的項目JSON的本地JSON文件不在服務器端有沒有解決方案? –