Lev*_*Lev 12 javascript ajax amazon-web-services amazon-simpledb cors
我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)
当我运行这个网页时,我收到此错误:
XMLHttpRequest无法加载https://sdb.amazonaws.com/.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'null'访问.响应具有HTTP状态代码400.
我认为这是由于CORS政策.但我找不到为SimpleDB设置CORS的方法,所以我在浏览器中安装了一个AddOn,允许从任何来源请求任何带有ajax的站点.
打开AddOn后,我得到一个不同的错误:
XMLHttpRequest无法加载https://sdb.amazonaws.com/.无效的HTTP状态代码400
我尝试从本地文件运行此脚本并将其托管在AWS S3上.我仍然得到同样的错误.我确信我的帐户中存在数据库,我可以使用其他工具访问它.但我需要使用JavaScript访问它.我究竟做错了什么?
编辑: 来自浏览器控制台的更多信息
根据这个论坛帖子:
虽然可以在浏览器 SDK 中将 SimpleDB 与 Javascript 结合使用,但正如您所指出的,这需要在客户端禁用 CORS。
AWS Javascript SDK 实际上是为浏览器端和服务器端使用而构建的,这就是为什么许多不包含显式 CORS 支持的服务可用。
浏览器 SDK 中的 Javascript 明确支持以下服务:DynamoDB、SNS、STS、S3、SQS
事实证明,目前不可能通过 http 使用 SimpleDB AWS SDK。添加 CORS 支持的请求已于2014 年 2 月 27 日提交,但看起来尚未实施。