簡體   English   中英

DynamoDB本地訪問控制允許來源

[英]DynamoDB Local Access-Control-Allow-Origin

我正在嘗試開發一個應用程序(例如,在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)
});

這就是我得到的:

XMLHttpRequest無法加載what.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>

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM