我一整天都在忙着打电话给Azure Storage REST API。响应显示它是由于Azure身份验证中的错误,但我不知道是什么问题。 你也可以在这里检查类似的问题
Authorization of Azure Storage service REST API
通过使用这个我得到了blod为我工作但不是为表。 如何用表格来实现这个目标
var apiVersion = '2017-07-29';
var storageAccountName = "MyAccountName";
var key = "MyAccountKey";
var currentDate= new Date();
var strTime = currentDate.toUTCString();
var strToSign = 'GET\n\n\n\nx-ms-date:' + strTime + '\nx-ms-version:' + apiVersion + '\n/' + storageAccountName + '/?restype=service&comp=properties';
var secret = CryptoJS.enc.Base64.parse(key);
var hash = CryptoJS.HmacSHA256(strToSign, secret);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
var auth = "SharedKeyLite " + storageAccountName + ":" + hashInBase64;
document.write(auth)
$.ajax({
type: "GET",
url: "https://MyAccountName.table.core.windows.net/?restype=service&comp=properties&sv=2017-07-29&ss=bqtf&srt=sco&sp=rwdlacup",
beforeSend: function (request) {
request.setRequestHeader("Authorization", auth);
request.setRequestHeader("x-ms-date", strTime);
request.setRequestHeader("x-ms-version", apiVersion);
},
processData: false,
success: function (msg) {
// Do something
},
error: function (xhr, status, error) {
// Handle error
}
});
上面的代码段是访问Azure表存储。但这不起作用。但是,如果我尝试对抗blob,它似乎正在工作
var strToSign = 'GET\n\n\n\nx-ms-date:' + strTime + '\nx-ms-version:' + apiVersion + '\n/' + storageAccountName + '/?comp=list';
url: "https://appcrestdev.blob.core.windows.net/?comp=list",
答案 0 :(得分:1)
char[3]
与blob的认证不同。
您可以更改以下两个变量并尝试一下,它可以在我这边工作。
strToSign
var strToSign = strTime + '\n/' + storageAccountName + '/?comp=properties';
这里有一些参考资料。
答案 1 :(得分:0)
我建议您使用以下教程进行身份验证,看看您是否错过了一个步骤:https://www.youtube.com/watch?v=ujzrq8Fg9Gc
这应该可以解决您的问题。
这是Azure服务的REST API的链接:https://docs.microsoft.com/en-us/rest/api/azure/#register-your-client-application-with-azure-ad