2016-06-28 127 views
0

因此,我在DynamoDB中创建了一个超级基本的NoSQL数据库,并使用API​​网关访问数据。我创建了一个非常简单的Get请求,根据它的ID检索文档。现在我对Angular和AWS相当陌生,所以我现在对我很感兴趣。我玩过不同的代码,发现一个非常基本的角色示例,它运行$ http.get,并且几乎只是在窗口中显示数据。我的问题是,当我运行这个角码与任何其他API端点它很好。但是,当我对API网关端点运行此代码时,没有任何东西可以通过。我尝试添加一个内容类型的标题,但仍然没有给我任何东西。相当卡住,任何帮助将不胜感激。我确信这是明显的我错过了API网关/我的休息电话,但任何帮助将是伟大的!提前致谢!

<!DOCTYPE html> 
<html> 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<body> 

<div ng-app="myApp" ng-controller="myCtrl"> 


<h1>{{myWelcome}}</h1> 

</div> 


<script> 
var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope, $http) { 
    $http.get("https://xyz.execute-api.us-west-2.amazonaws.com/dev/idex/0001") 
.then(function(response) { 
    $scope.myWelcome = response.data; 
    }); 
}); 
</script> 

</body> 
</html> 

很明显,json应该通过H1标签显示,但没有任何东西正在通过。此外,我改变了我的端点网址的安全性。

+0

浏览器控制台有任何错误吗? –

+0

两个错误。第一个:15:02:43.958跨域请求被阻止:相同的源策略不允许在[API ENDPOINT URL]处读取远程资源。 (原因:缺少CORS头'Access-Control-Allow-Origin').1 。第二:GET XHR [API端点] [HTTP/1.1 407代理验证需要17ms] –

+0

CORS错误,意味着您应该使用相同的URL来访问您的资源:https://en.wikipedia.org/wiki/Cross- origin_resource_sharing –

回答

2

首先,我强烈建议您首先使用curl测试您的API,以确保它在简单情况下按预期工作,然后尝试通过浏览器从Angular调用时使其工作。

正如您在问题的某些评论中已经提到的那样,您需要为此方法启用CORS。启用CORS后,务必重新部署您的API。下面的详细说明。

在API网关控制台中,选择您的GET方法。从“操作”下拉列表中选择“启用CORS”。在右下角,点击标记为“启用CORS并替换现有CORS标题”的按钮。完成此操作后,从“操作”下拉列表中选择“部署API”重新部署该API。 (启用CORS后必须再次部署)。

+0

没错!没有想到重新部署它,但非常有意义。感谢AWS的mikeD和@Rida BENHAMMANE的帮助。 –