2015-02-24 42 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> 

希望幫助!