DynamoDB本地访问控制允许原点

时间:2015-02-24 17:17:10

标签: javascript amazon-web-services amazon-dynamodb

我正在尝试开发一个应用程序(例如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),所以使用它会很糟糕。

谢谢!

1 个答案:

答案 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>

希望有所帮助!