使用AWS API网关的$ http.get
因此,我在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标签显示,但没有任何东西正在通过。此外,我改变了我的端点网址的安全性。
首先,我强烈建议您首先使用curl测试您的API,以确保它在简单情况下按预期工作,然后尝试通过浏览器从Angular调用时使其工作。
正如您在问题的某些评论中已经提到的那样,您需要为此方法启用CORS。启用CORS后,务必重新部署您的API。下面的详细说明。
在API网关控制台中,选择您的GET方法。从“操作”下拉列表中选择“启用CORS”。在右下角,点击标记为“启用CORS并替换现有CORS标题”的按钮。完成此操作后,从“操作”下拉列表中选择“部署API”重新部署该API。 (启用CORS后必须再次部署)。
没错!没有想到重新部署它,但非常有意义。感谢AWS的mikeD和@Rida BENHAMMANE的帮助。 –
浏览器控制台有任何错误吗? –
两个错误。第一个:15:02:43.958跨域请求被阻止:相同的源策略不允许在[API ENDPOINT URL]处读取远程资源。 (原因:缺少CORS头'Access-Control-Allow-Origin').1。第二:GET XHR [API端点] [HTTP/1.1 407代理验证需要17ms] –
CORS错误,意味着您应该使用相同的URL来访问您的资源:https://en.wikipedia.org/wiki/Cross- origin_resource_sharing –