2015-02-24 33 views
2

我试图开发一个应用程序(例如http://whatever.dev),一旦在生产中使用AWS DynamoDB和JavaScript(而不是Node)。目前,我们正在使用DynamoDB Local来在本地开发而无需触击AWS。DynamoDB本地访问控制 - 允许来源

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”标题。因此不允许访问Origin'whatever.dev'。

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

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

谢谢!

回答

4

您可以用-cors参数

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

例如启动DynamoDB本地

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> 

希望帮助!

相关问题