我正在尝试使用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'标头。因此,不允许访问原点'null'。响应的HTTP状态码为400。
我认为这是由于CORS政策。但是我找不到一种方法来设置CORS为SimpleDB,所以我安装了一个插件到浏览器,允许请求任何网站与ajax从任何来源。
与AddOn打开,我得到一个不同的错误:
XMLHttpRequest无法加载https://sdb.amazonaws.com/。无效HTTP状态码400
我尝试从本地文件运行此脚本,并将其托管在AWS S3上。我还是会得到相同的错误。我确信数据库存在于我的帐户上,我可以用其他工具访问它。但我需要用JavaScript访问它。我做错了什么?
Edit:来自浏览器控制台的更多信息
根据这个论坛帖子:
虽然可以在浏览器SDK中使用SimpleDB和Javascript,但正如您所注意到的,这需要在客户端禁用CORS。
AWS Javascript SDK实际上是为浏览器和服务器端使用而构建的,这就是为什么许多不包括显式CORS支持的服务可用。
浏览器SDK中的Javascript明确支持以下服务:DynamoDB、SNS、STS、S3、SQS
事实证明,目前不可能通过http使用SimpleDB AWS SDK。添加CORS支持的请求是在2014年2月27日提交的,但看起来它还没有实现。