docker dynamodb-local的CORS问题

时间:2018-11-12 18:33:25

标签: javascript docker cors amazon-dynamodb

我在使用docker dynamodb-local容器进行跨域访问时遇到问题。我旋转容器,放入一些生成的数据,然后在浏览器的脚本中(使用AWS SDK)在本地连接到该容器。它可以从docClient.get(...)中提取第一项(常规数据条目)。然后,我浏览到另一个路径,其中运行docClient.batchGet(...),发生Cross-Origin Request Blocked错误。我不知道为什么。

我在dynamodb-local中设置了-cors "*",我确实认为我的操作系统可能以某种方式阻止了cors,但是我没有运行/安装NGINX或apache(或其他)。我认为,没有防火墙在运行,在我的Linux系统上没有其他干扰。我确信泊坞窗本身并不在乎,并且让容器担心CORS。问题仍然存在,并在Chromium和Firefox中进行了测试。

步骤:

  1. 启动docker容器,
  2. 将生成的数据添加到数据库
  3. 启动webpack开发服务器(localhost:8080)
  4. 浏览到localhost:8080,(docClient.get有效,获取常规数据)
  5. 浏览到localhost:8080 / test,(docClient.batchGet会导致CORS错误)。

Docker:

https://github.com/cnadiminti/docker-dynamodb-local

的克隆

其中docker-entry.sh更改为:

#!/user/bin/env bash
set -e

exec java -Djava.library.path=/var/dynamodb_local/ ${JAVA_OPTS} -jar /var/dynamodb_local/DynamoDBLocal.jar -part ${DYNAMODB_PORT} -cors "*" "$@"

docker run -d -p 8000:8000 --name dynamodb my-dynamodb旋转而成。

然后生成数据并将其放置在数据库中。

在浏览器(Vue和Webpack)(Fetcher.js)中:

import AWS from 'aws'

AWS.config.update({
  region: 'ca-central-1',
  accesssKeyId: 'local',
  secretAccessKey: 'local',
  endpoint: 'http://localhost:8000',
  sslEnabled: false,
  maxRetries: 5
})

const docClient = new AWS.DynamoDB.DocumentClient()

docClient.get({
  Key: {
    hash: 'general-info',
  },
  TableName: 'test'
}, (err, data) => {...})

docClient.batchGet({
  RequestItems: {
    'test': {
        Keys: [...]
      }
    }
  }, (err, data) => {...})

错误:

Access to XMLHttpRequest at 'http://localhost:8000/' from origin 8080/test:1 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

POST http://localhost:8000/ 400 (Bad Request) aws-sdk.min.js:53

Error: Network Failure                  Fetcher.js:151
    at XMLHttpRequest.<anonymous> (aws-sdk.min.js:53)

0 个答案:

没有答案