我正在尝试使用纯Javascript向AWS S3发出GET请求。这是因为很遗憾,我无法再将SDK用于所有请求。我一直在尝试遵循Amazon提供的文档,但是进展甚微。到目前为止,我只能生成我的签名密钥。如果有人可以发布一个纯Javascript示例,使它简单地调用以检索对象,甚至列出所有带有特定前缀的对象,我将不知所措。老实说,我完全失去了阅读其文档的机会。似乎它仅对非常熟悉拨打这些电话的人有用。 #1和#2 on this image here是我一直在努力的目标。我想我有点理解他们想要什么,但我不知道如何将其完全转换为实际要求。不幸的是,他们文档中的代码示例很少而且相差甚远-其中很多只是伪代码/整件事的一小部分
编辑:您好,甚至还有人阅读
edit2:这是一些我想弄清楚怎么做的不起作用的东西
if (ComboboxValue == "some text from the dropdown menu"){ String sql =
INSERT INTO tbl_1}
else{ String sql = INSERT INTO tbl_2}
edit3:这是我遇到的许多错误,大概是因为我不知道自己在做什么。
var signingKey = getSigningKey(dateStamp, secretKey, regionName, serviceName);
var time = new Date();
//fullURL is something like https://s3.amazon.aws.com/{bucketName}/{imageName}
time = time.toISOString();
time = time.replace(/:/g, '').replace(/-/g,'');
time = time.substring(0,time.indexOf('.'))+"Z";
var request = new XMLHttpRequest();
var canonString = "GET\n"+
encodeURI(fullURL)+"\n"+
encodeURI("Key=asd.jpeg")+"\n"+
"host:s3.amazonaws.com\n"+
"x-amz-content-sha256:"+CryptoJS.SHA256("").toString()+"\n"+
"host;x-amz-content-sha256\n"+
CryptoJS.SHA256("").toString();
var stringToSign = "AWS4-HMAC-SHA256\n"+
time+"\n"+
"20181002/us-east-1/s3/aws4_request\n"+
CryptoJS.SHA256(canonString).toString();
var authString = CryptoJS.HmacSHA256(signingKey, stringToSign).toString();
var queryString = "GET https://s3.amazonaws.com/?Action=GetObject&Version=2010-05-08 HTTP/1.1\n"+
"Authorization: AWS4-HMAC-SHA256 Credential="+accessKey+"/20181002/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature="+authString+"\n"+
"host: s3.amazonaws.com\n"+
"x-amz-date: "+time+"\n";
request.open("GET", "https://s3.amazonaws.com/?Action=GetObject&Version=2010-05-08", false);
request.setRequestHeader("Authorization", "AWS4-HMAC-SHA256 Credential="+accessKey+"/20181002/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-date, Signature="+authString);
request.setRequestHeader("host", "s3.amazonaws.com");
request.setRequestHeader("x-amz-date", time);
request.send();
答案 0 :(得分:0)
您可能想将SDK与浏览器调试器结合使用,以确定SDK如何格式化请求。在Chrome调试器的“网络”标签中,您可以将请求复制为javascript抓取。这将显示您需要设置的所有标题。然后,您可以将其用作非SDK代码的基础。