我正在尝试开发一个应用程序(例如http://whatever.dev),一旦投入生产,将使用AWS DynamoDB和JavaScript(而不是Node)。目前,我们正在使用DynamoDB Local来开发本地而无需访问AWS。
DynamoDB Local的问题是没有提供从服务器发回的Access-Control-Allow-Origin标头。
所以如果我在whatever.dev上这样做:
var dynamodb = new AWS.DynamoDB({
accessKeyId: 'thisIsSomeInvalidKey',
secretAccessKey:'anEquallyInvalidSecret!',
region: 'us-east-1',
endpoint: 'http://whatever.dev:8000',
sslEnabled: false,
maxRetries: 5,
//logger: console
});
dynamodb.listTables(function(err, data) {
console.log(data)
});
这就是我的回忆:
XMLHttpRequest无法加载whatever.dev:8000。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许来源'whatever.dev'访问。
所以,基本上,我在本地开发,使用DynamoDB Local但我无法连接到它,因为它不能给我XHR津贴。有没有办法解决?我可以修改DynamoDB Local中的某些内容以获取正确的标题吗?
我的项目没有Python / Java依赖项(它纯粹是前端,使用Backbone和RequireJS),所以使用它会很糟糕。
谢谢!
答案 0 :(得分:4)
您可以使用-cors参数
启动DynamoDB Local-cors <arg> Enable CORS support for javascript against a
specific allow-list list the domains
serporated by , [use '*' for public access]
E.g。
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar --cors "*"
并且可以在浏览器中打开包含以下内容的html文件:
<html>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.14.min.js"></script>
<script>
var dynamodb = new AWS.DynamoDB({
accessKeyId: 'thisIsSomeInvalidKey',
secretAccessKey:'anEquallyInvalidSecret!',
region: 'us-east-1',
endpoint: 'http://localhost:8000',
sslEnabled: false,
maxRetries: 5,
});
dynamodb.listTables(function(err, data) {
console.log(data) // { TableNames: Array[0] }
});
</script>
</html>
希望有所帮助!