2015-10-03 75 views
0

由於我的跨域錯誤,我試圖將我的$ http調用轉換爲JSONP調用。

請求的 資源上沒有「Access-Control-Allow-Origin」標頭。因此,'http://localhost:5000'因此不允許 訪問。

我是一個初學者,已經提取從我的控制器我得到服務,我與發現那個地方努力改變$ HTTP到基於角文檔上$ http.jsonp(URL)

這裏是我的service.js

.service('NCAAF',function($http, $ionicLoading) { 
    return { 
    get: function() { 
     $ionicLoading.show({ 
     template: 'Loading...', 
     delay: 300 
     }) 
     return $http (
     { 
     method: 'GET', 
     cache: true, 
     crossDomain: true, 
     dataType: 'jsonp', 
     url: 'https://www.kimonolabs.com/api/[key]?callback=JSON_CALLBACK', 
     headers: { 
       'authorization': 'Bearer [auth]' 
     } 
     }); 
    } 
    }; 
}) 

controller.js

.controller('NCAAFCtrl', function ($scope, NCAAF, $ionicPopup, $ionicLoading) { 
    var doGet = function() { 

    NCAAF.get(). 
     success(function (data) { 
     $scope.data = data['results']['collection1']; 
     $ionicLoading.hide(); 
     }). 
     error(function() { 
     $ionicLoading.hide(); 
     var alertPopup = $ionicPopup.alert({ 
      title: 'Something went wrong', 
      template: 'Try reloading in a few seconds.' 
     }); 
     alertPopup.then(function() { 
      console.log('Fix this ish'); 
     }); 
     }). 
     finally(function() { 
     $scope.$broadcast('scroll.refreshComplete'); 
     }); 
    }; 
    $scope.doRefresh = function() { 
    doGet(); 
    }; 

    doGet(); 
}) 

回答

0

JSONP可以讓你做cors請求,但這並不意味着你將能夠得到正確的迴應。

JSONP要求您將JSON響應封裝到Javascript函數調用中。 當您執行JSONP請求時,查詢字符串將設置一個名爲 'callback'的參數,該參數將告訴您的服務器如何包裝JSON響應。

服務器應該使用請求字符串中的回調參數來相應地設置 響應。

所以反應應該是

callback([ {「access_token」: 「asdfsd」, 「expires」: 「86400" ,"type" : "bearer"} 
]); 

在角度它看起來像

angular.callbacks._0([ {「access_token」: 「asdfsd」, 「expires」: 「86400" ,「type」 : 
「bearer」} ]); 

但只爲您的如何使JSONP呼叫信息,更改代碼

return $http (
     { 
     method: 'GET', 
     cache: true, 
     crossDomain: true, 
     dataType: 'jsonp', 
     url: 'https://www.kimonolabs.com/api/[key]?callback=JSON_CALLBACK', 
     headers: { 
       'authorization': 'Bearer [auth]' 
     } 
     }); 

return $http.jsonp('https://www.kimonolabs.com/api/[key]?callback=JSON_CALLBACK',{ 
headers: { 
       'authorization': 'Bearer [auth]' 
     } 
});