可能是在使用共享访问签名时,使用的字符串不完全匹配。请检查签名字符串是否正确,包括URL,路径,过期时间,以及任何其他参数。同时,请确认用于计算签名的密钥是否与用于发送请求的密钥一致。以下是一个示例代码,用于计算共享访问签名:
var accountName = "[your-storage-account-name]";
var accountKey = "[your-storage-account-key]";
var apiVersion = "2015-12-11";
var containerName = "[your-container-name]";
var blobName = "[your-blob-name]";
var permissions = "r";
var expiry = new Date();
expiry.setMinutes(expiry.getMinutes() + 5);
var stringToSign =
permissions + "\n" +
expiry.toISOString() + "\n" +
"/" + accountName + "/" + containerName + "/" + blobName + "\n" +
apiVersion;
var signature = crypto.createHmac("sha256", new Buffer(accountKey, "base64"))
.update(stringToSign, "utf-8")
.digest("base64");
var sasToken = "sv=" + apiVersion + "&" +
"sr=b&" +
"sig=" + encodeURIComponent(signature) + "&" +
"st=" + encodeURIComponent(expiry.toISOString()) + "&" +
"se=" + encodeURIComponent(expiry.toISOString()) + "&" +
"sp=" + encodeURIComponent(permissions);
console.log("Shared Access Signature: " + sasToken);
代码示例中包括一个计算共享访问签名的函数,可以按需修改并使用。