Я следую документации REST Azure для GET ACL Table , Аутентификация для Azure Storage Services .
Ниже приведен фрагмент кода для операции REST, которую я выполняю.
//Input your Storage Account and access-key associated to it.
const yourStorageAccountName = '';
const accessKeyStorageAccount = '';
const Client = require('node-rest-client').Client;
const crypto = require("crypto");
async function getTableAcl() {
let now = new Date();
let nowUTC = now.toUTCString();
let contentType = "application/json"
// construct input value
let stringToSign = `GET\n\n\n${nowUTC}\n/${yourStorageAccountName}/tablename\ncomp:acl`;
let accesskey = accessKeyStorageAccount;
// create base64 encoded signature
let key = new Buffer(accesskey, "base64");
let hmac = crypto.createHmac("sha256", key);
hmac.update(stringToSign);
let sig = hmac.digest("base64");
console.log("SIGNATURE : " + sig);
console.log("nowutc : " + nowUTC);
let args = {
headers: {
"Authorization": "SharedKey " + yourStorageAccountName + ":" + sig,
"Date": nowUTC,
"x-ms-version": "2015-12-11"
}
};
let restClient = new Client();
restClient.get(`https://${yourStorageAccountName}.table.core.windows.net/tablename?comp=acl`, args, function (data, response) {
console.log(JSON.stringify(data));
//console.log(response);
});
}
getTableAcl()
Подвох в том, что в документации Azure Table нет упоминания Content-Type, но в части заголовка Authorization указывается включение Content-Type. Следовательно, я сохраняю тип содержимого пустым в "stringToSign" и не предоставляю заголовок Content-Type в вызове REST. Возможно, я что-то упускаю, но не могу определить, что это может быть.
Можете ли вы сообщить мне, если я что-то не так в этом случае?