【发布时间】:2015-10-15 23:52:37
【问题描述】:
我正在尝试使用 AWS SimpleDB Javascript SDK。 这是包含我的脚本的网页:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="https://dl.dropboxusercontent.com/u/4111969/aws-sdk-2.1.39.js"></script>
<script type="text/javascript">
AWS.config.update({accessKeyId: 'MYKEY', secretAccessKey: 'MYSECRET'});
AWS.config.region = 'us-east-1';
AWS.config.logger = console;
</script>
<script>
var simpledb = new AWS.SimpleDB({region:'us-east-1'});
var params = { MaxNumberOfDomains: 1 };
simpledb.listDomains(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
</script>
</body>
</html>
当我运行这个网页时,我得到了这个错误:
XMLHttpRequest 无法加载 https://sdb.amazonaws.com/。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问。响应的 HTTP 状态代码为 400。
我认为这是由于 CORS 政策。但是我找不到为 SimpleDB 设置 CORS 的方法,所以我在浏览器中安装了一个 AddOn,它允许从任何来源请求任何带有 ajax 的站点。
打开插件后,我得到一个不同的错误:
XMLHttpRequest 无法加载 https://sdb.amazonaws.com/。 HTTP 状态码 400 无效
我尝试从本地文件运行此脚本并将其托管在 AWS S3 上。我仍然得到同样的错误。我确定数据库存在于我的帐户中,并且可以使用其他工具访问它。但我需要用 JavaScript 访问它。我做错了什么?
【问题讨论】:
-
您能否将您的请求发布到服务器以及服务器的响应?由于某种原因,某些标题可能丢失或不正确。
-
@VaughnOkerlund 我不确定从哪里获得这些信息。但是我复制了我在浏览器控制台中可以找到的所有内容:dl.dropboxusercontent.com/u/4111969/log.txt
-
可能相关:AWS Support 说 CORS isn't supported on SimpleDB 大约 2014 年。
-
@devonlazarus 感谢您的链接,我找到了答案:AWS Javascript SDK 实际上是为浏览器和服务器端使用而构建的,这就是为什么许多不包含明确 CORS 支持的服务可用的原因。 Browser SDK 中的 Javascript 明确支持以下服务:DynamoDB、SNS、STS、S3、SQS
标签: javascript ajax amazon-web-services cors amazon-simpledb