在JavaScript中生成Amazon API签名,导入哈希函数(jQuery)
作为前言,我对JavaScript和web开发非常陌生。我为我所犯的任何愚蠢的错误或误解道歉 我正在为一个web门户制作一个小部件。小部件的设置使得每个小部件都是一个独立的JavaScript函数,因此我无法在小部件之外访问网页的HTML 我目前的目标是向Amazon发出API请求,这需要在每次请求时生成签名。我正在使用亚马逊提供的以下指南: 不幸的是,由于我无法访问网页的HTML,我正在使用jQuery函数$.getScript导入上述Amazon指南提供的函数: code.google.com/p/crypto js/#HMAC 具体来说,这一点: crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js 我的函数当前如下所示:在JavaScript中生成Amazon API签名,导入哈希函数(jQuery),javascript,jquery,amazon-web-services,Javascript,Jquery,Amazon Web Services,作为前言,我对JavaScript和web开发非常陌生。我为我所犯的任何愚蠢的错误或误解道歉 我正在为一个web门户制作一个小部件。小部件的设置使得每个小部件都是一个独立的JavaScript函数,因此我无法在小部件之外访问网页的HTML 我目前的目标是向Amazon发出API请求,这需要在每次请求时生成签名。我正在使用亚马逊提供的以下指南: 不幸的是,由于我无法访问网页的HTML,我正在使用jQuery函数$.getScript导入上述Amazon指南提供的函数: code.google.c
/**
*Get signature key by hashing, scheme provided by Amazon
*/
getSignatureKey: function(key, dateStamp, regionName, serviceName) {
$.getScript("widgets/textshop/hmac-sha256.js", function(){
return signatureKeyHelper();
});
//Helper function for getSignatureKey since getScript is returned immediately; function not loaded in time
function signatureKeyHelper(){
console.log("A"); //Outputs!
var kDate= Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, { asBytes: true})
console.log("B"); //Error in previous line!
var kRegion= Crypto.HMAC(Crypto.SHA256, regionName, kDate, { asBytes: true });
var kService=Crypto.HMAC(Crypto.SHA256, serviceName, kRegion, { asBytes: true });
var kSigning= Crypto.HMAC(Crypto.SHA256, "aws4_request", kService, { asBytes: true });
return kSigning;
}
},
控制台输出“A”,但给出错误“TypeError:Crypto.HMAC不是函数”。我非常不确定的部分是“加密”名称的使用——我完全不知道这个名称来自何处,是否应该改成其他名称,等等
谢谢你的时间 加密是一个通常会加载到页面上的库 该错误表示未定义该函数;我猜$.getScript没有按您的预期工作 注意:您永远不应该公开您的AWS密钥。您不能在客户端加密