enter code here
我正在尝试使用javascript下载存储在azure blob中的文件,并出现此错误。
这是我的密码
function getUrlOfAttachmentFileFromBlob(new_fileurl,new_fileName) {
var fileHyperlink = '';
var blobUri = 'https://' + 'Storage_Account_Name' + '.blob.core.windows.net';
var containerName = 'trial';
var sas_token = 'sastoken' ;
var blobService = AzureStorage.Blob.createBlobServiceWithSas(blobUri, sas_token);
//.withFilter(new AzureStorage.Blob.ExponentialRetryPolicyFilter());
var downloadLink = blobService.getUrl(new_fileName, new_fileurl.replace('/'+containerName+'/',''), sas_token);
if (downloadLink != null)
{
alert("Link " + downloadLink);
downloadURI(downloadLink, new_fileName);
}
}
我没有在这里生成共享签名和sas令牌。我直接将sas令牌分配给变量。
当我试图在浏览器中打开链接时,我遇到了此错误
AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:504f2ef5-f01e-0021-0e02-74e194000000
Time:2021-07-08T14:09:47.9951927Z</Message><AuthenticationErrorDetail>sp is mandatory. Cannot be empty</AuthenticationErrorDetail></Error>
我没有在代码中传递任何头。
我错过了什么?
sas令牌=?sp=r&st=2021-07-08t12:19:08z&se=2021-07-08t20:19:08z&spr=https&sv=2020-02-10&sr=c&
没有sig部分。
这是我从geturl函数得到的=
?%3fsv=2020-02-10&ss=bfqt&srt=sco&sp=rwdlacuptfx&se=2021-07-11t12%3a30%3a23z&st=2021-06-11t04%3a30%3a23z&spr=https%2chttp&
我想我没有从这个函数中得到正确的url,所以我用这个替换了这一行
const downloadLink = blobUri +'/' + containerName + '/' + new_fileName + sas_token;
但仍然无法下载该文件。但是没有得到身份验证错误。
非常感谢。
1条答案
按热度按时间qxsslcnc1#
出现此错误的原因是您的sas令牌无效。如果仔细查看错误消息,您将看到以下内容:
基本上,您的sas令牌丢失了
signed permissions (sp)
参数请检查您的sas令牌并确保其格式正确。