2015-12-26 31 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