gpt4 book ai didi

javascript - 使用 JavaScript 使用 Amazon dynamoDB

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:35 25 4
gpt4 key购买 nike

我一直在尝试使用 jQuery 和 Ajax 调用通过 JavaScript 与 Amazon DynamoDB 交互,但没有成功。经过两天的研究,我开始意识到这可能是不可能的。我看到他们有适用于 Java、PHP 和 .Net 的 SDK,但还没有适用于 JavaScript 的 SDK。

亚马逊在这个链接中解释了如何向 dynamo 发送命令:

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/UsingJSON.html#JSONMajorExample

我已经能够使用 PHP sdk 和 node.js (https://github.com/xiepeng/dynamoDB) 完成此操作,但无法通过常规 javascript ajax 调用或 xmlHttpRequest 调用。

我已经能够获得有效的 aws 签名、 secret ID 和 session token ,因此我已将它们硬编码到 header 中。

这是我的代码:

$.ajax({  
beforeSend: function(xhr) {
console.log("getting built");


xhr.setRequestHeader('host', 'dynamodb.us-east-1.amazonaws.com');
xhr.setRequestHeader('x-amz-date', 'Fri, 10 Feb 2012 20:44:00 GMT');
xhr.setRequestHeader('date', 'Fri, 10 Feb 2012 20:44:00 GMT');
xhr.setRequestHeader('x-amz-security-token', '**MYSECURITY TOKEN**');
xhr.setRequestHeader('x-amz-target', 'DynamoDB_20111205.PutItem');
xhr.setRequestHeader('content-type', 'application/x-amz-json-1.0');
xhr.setRequestHeader('content-length', 103);
xhr.setRequestHeader('x-amzn-authorization', 'AWS3 AWSAccessKeyId=**MY ACCESS KEY**,Algorithm=HmacSHA256,SignedHeaders=host;x-amz-date;x-amz-security-token;x-amz-target,Signature=**MY SIGNATIURE**=');


},

type: "POST",
url: "http://dynamodb.us-east-1.amazonaws.com",
dataType: "json",
data: '{"TableName":"Sample","Item":{"RecordId":{"S":"white"},"Square":{"S":"teess"},"circle":{"S":"eeerer"}}}',
error: function(XHR,textStatus,errorThrown) {
// alert ("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);
console.log(XHR);
console.log(textStatus);
console.log(errorThrown);
},

success: function(data) {
console.log("success");
}
});

当我运行它时,出现 404 Not found 错误,方法显示为“OPTIONS”(与 POST 或 GET 相对)

最佳答案

不太熟悉 AWS Dynamo,但对 HTTP 和 XMLHttpRequest 非常熟悉,Host 不是可以通过 xhr 设置的 header 。 XHR 从请求的 url 中提取主机信息。不确定 $.ajax 是否会忽略您尝试设置该 header ,但我会在没有它的情况下尝试。

此外,您如何计算内容长度?您的字符串 103 个字符,但不一定是 103 个字节(取决于编码、字符集等),Content-Length 计算得出。我也会在没有该 header 的情况下尝试。

让我们知道进展如何!

更新:

我认为自从 Microsoft 为每个人做出该决定以来,它就成为 Ajax 的一部分,成为“同源策略”的受害者。 :-) 您将不得不编写驻留在您的域中的某种服务器端代理,并向/从中发出 Ajax 请求。

您熟悉 PHP 吗?看起来 AWS 在 PHP 中有一个用于 DynamoDB 的库。

关于javascript - 使用 JavaScript 使用 Amazon dynamoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9236500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com