2015-12-26 32 views
0

我試圖在angularjs中創建api的演示用法,並且遇到此問題。由於angularjs中的CORS無法顯示JSON數據

我的代碼看起來是這樣的:

app.js and index.html

var app = angular.module("ytsApp",['ngRoute','ngResource']); 
 

 
app.controller('MoviesCtrl',['$scope','movies',function($scope,movies){ 
 
    movies.get(function(data){ 
 
     alert(data); 
 
    }); 
 
}]); 
 

 
app.factory('movies',['$resource',function($resource){ 
 
    return $resource('https://yts.ag/api/v2/list_movies.json',{ 
 
     'sort_by': 'year', 
 
     'limit': '15' 
 
    },{ 
 
     'load': { 
 
      method: 'GET', 
 
      headers: { 
 
       'Content-Type': 'application/x-www-form-urlencoded' 
 
      } 
 
     } 
 
    }); 
 
}]);
<!DOCTYPE html> 
 
<html ng-app="ytsApp"> 
 
    <head> 
 
     <title>The Official Home of YIFY Movie Torrent Downloads - YIFY</title> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular.min.js"></script> 
 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular-route.js"></script> 
 

 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.5/angular-resource.js"></script> 
 

 
    </head> 
 
    <body ng-controller="MoviesCtrl"> 
 

 
     <script type="text/javascript" src="js/app.js"></script> 
 
    </body> 
 
</html>

這是越來越顯示在控制檯的結果,而我打開頁面:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://yts.ag/api/v2/list_movies.json?limit=15&sort_by=year. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

我在這裏和那裏搜索並試圖用幾種方式編輯頭文件,但無法破解它。我很感激,如果有人幫我解決這個問題。

+0

如果你有機會到後臺,你將不得不跨源策略添加到您的服務器,並允許訪問您的應用程序。或者你可以使用JsonP。 Json與填充。在這裏看到一個例子如何使用它時,使Ajax調用http://jsfiddle.net/saarmstrong/hYACX/8/light/ –

+0

@ hasta-pasta我已嘗試$ http.jsonp()方法也。有來自服務器的響應,但它在控制檯中顯示如下。 'SyntaxError:missing;之前的聲明list_movies.json:1:9' – apparaokoppuka

回答

0

您可以使用JSONP爲您的演示支持跨域:

$http.jsonp('...').then(...); 
+0

我也試過$ http.jsonp()方法。有來自服務器的響應,但它在控制檯中顯示如下。 'SyntaxError:missing;之前的聲明list_movies.json:1:9' 當我點擊'list_movies.json:1:9'時,它會帶我到響應主體源,我可以看到json響應。但它是無法使用的。任何想法? (數據,狀態,頭文件){ console.log(data) ); });' 這是我用過的代碼。 – apparaokoppuka

+0

你可以試試$ http.jsonp('https://yts.ag/api/v2/list_movies.json').then((response)=> {console.log(response.data)});不要忘記注入$ http而不是$ resource。 – AngularBoy

+0

沒有鍛鍊。上面提到的同樣的錯誤仍然存​​在。 :( – apparaokoppuka