Pie*_*Luc 2 javascript amazon-web-services amazon-dynamodb
我正在尝试开发一个应用程序(例如在http://whatever.dev上),一旦投入生产,它将使用带有 JavaScript(而不是 Node)的 AWS DynamoDB。目前,我们使用 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)
});
Run Code Online (Sandbox Code Playgroud)
这是我回来的:
XMLHttpRequest 无法加载whatever.dev:8000。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问原点“whatever.dev”。
所以,基本上,我在本地开发,使用 DynamoDB Local 但我无法连接到它,因为它没有给我 XHR 津贴。有没有办法解决?我可以修改 DynamoDB Local 中的某些内容以获得正确的标头吗?
我的项目没有 Python/Java 依赖项(它纯粹是前端,带有 Backbone 和 RequireJS),所以使用一个会很糟糕。
谢谢!
小智 5
您可以使用 -cors 参数启动 DynamoDB Local
-cors <arg> Enable CORS support for javascript against a
specific allow-list list the domains
serporated by , [use '*' for public access]
Run Code Online (Sandbox Code Playgroud)
例如
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar --cors "*"
Run Code Online (Sandbox Code Playgroud)
并且可以在浏览器中打开一个包含以下内容的 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>
Run Code Online (Sandbox Code Playgroud)
希望有帮助!