2015-05-29 87 views
0

我正在將flickr應用程序整合到我的應用程序中。 我收到下面的錯誤:訪問控制允許Origin | AngularJS

的XMLHttpRequest無法加載https://api/flickr.com/services/rest?api_key=4cd95b5ad05844319ee958bf96ec0150&format=json&method=flickr.photos.search&nojsoncallback=1。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許訪問原產地'http://sinch12j12.ads.autodesk.com'。響應有HTTP狀態代碼400

下面是客戶端代碼:

(function() { 
'use strict'; 
angular.module('flickrApp', ['ngMaterial']) 
    .config(['$httpProvider', function($httpProvider) { 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    }]) 
    .controller('ListController', ['$scope', '$http', function($scope, $http) { 
     $scope.results = []; 

     $scope.search = function() { 
      $http({ 
       method: 'GET', 
       url: 'https://api/flickr.com/services/rest', 
       params: { 
        method: 'flickr.photos.search', 
        api_key: '4cd95b5ad05844319ee958bf96ec0150', 
        text: $scope.searchTerm, 
        format: 'json', 
        nojsoncallback: 1 
       } 
      }).success(function(data) { 
       $scope.results = data; 
      }).error(function(error) { 
       console.log(error); 
      }); 
     } 

    }]); 
})(); 

請讓我知道如何將可以解決?

回答

0

您試圖使用AJAX從遠程服務器(在本例中爲Flickr服務器)檢索一些數據。出於安全原因,除非該文件允許來自遠程服務器的AJAX調用,否則不允許對遠程服務器上的任何文件進行AJAX調用。在這裏,您嘗試獲取的Flickr文件不允許來自任何其他服務器的AJAX調用,這就是爲什麼您無法訪問該文件中的數據。

謝謝,讓我知道如果你有任何問題。

1

您正在嘗試向另一個服務器(域)發出AJAX請求,該請求不允許來自其他域的Ajax請求。有兩種解決方案可解決您的問題:

  • 編輯遠程服務器的配置(Allow-Origin標頭)以允許來自其他服務器的AJAX請求。我認爲這種解決方案對您而言並不可行,因爲您無法配置flickr服務器
  • 在您的服務器中創建代理服務器組件,將API暴露給您的應用程序。因此,您將向AJAX請求您的 API(並且由於它是相同的域,您不會有跨域請求問題),並且您的服務器將向flickr API發出請求並在您的AJAX中作出響應呼叫。