DynamoDB本地访问控制允许原点

DynamoDB Local Access-Control-Allow-Origin

本文关键字:原点 许原点 访问控制 DynamoDB      更新时间:2024-04-19

我正在尝试开发一个应用程序(http://whatever.dev例如),一旦投入生产,将使用带有JavaScript的AWS DynamoDB(而不是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无法加载任何.dev:8000。请求的资源上不存在"Access Control Allow Origin"标头。因此,不允许访问原始文件"whatever.dev"。

所以,本质上,我在本地开发,使用DynamoDB Local,但我无法连接到它,因为它没有给我XHR津贴。有办法解决这个问题吗?我可以在DynamoDB Local中修改一些内容以获得正确的标题吗?

我的项目没有Python/Java依赖项(它纯粹是前端的,有Backbone和RequireJS),所以使用它会很糟糕。

谢谢!

您可以使用-cors参数启动DynamoDB Local

-cors <arg>             Enable CORS support for javascript against a
                        specific allow-list list the domains
                        serporated by , [use '*' for public access]

例如

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>

希望能有所帮助!