我和我的团队正在使用NextJS开发一个web应用程序,最近我们实现了用于文件上传和显示的Azure。我目前正在为前端的图像显示工作。为此,我使用包含以下参数的generateBlobSASQueryParameters对象生成带有sasOptions函数的SAS令牌:
object)
))
之后,im使用指定的blob名称和新生成的SAS令牌生成一个SAS URI。但是,当im试图访问sas URI时,im遇到了一个错误:
服务器无法验证请求。确保授权头的值是正确的,包括签名。RequestId:SOME_REQUEST_ID时间:2022-10-03T13:49:24.2788454Z签名字段格式不佳.签名:
https://mystorageaccount.blob.core.windows.net/images/example.png?sv=2021-06-08&ss=bfqt&srt=sco&sp=rwdlacupiytfx&se=2022-11-22T20:45:23Z&st=2022-10-03T11:45:23Z&spr=https&sig=ECjnJEvZCOPhvuOgCsGBMIwone7VmsiJQopVNyb4yB0%3D?sv=2021-06-08&st=2022-10-06T06%3A24%3A12Z&se=2022-10-06T06%3A34%3A12Z&sr=b&sp=racwdt&sig=ioMMCIFo0eXC%2BTZ9yDZB9D5JHz%2F%2BUyMMFqTPEG0QSqg%3D以下是无法进行身份验证的URL的参数:
sv=2021-06-08
ss=bfqt
srt=sco
sp=rwdlacupiytfx
se=2022-11-22T20:45:23Z
st=2022-10-03T11:45:23Z
spr=https
sig=ECjnJEvZCOPhvuOgCsGBMIwone7VmsiJQop,在生成SAS以使其工作时,有什么我可以做或照顾的吗?
注意:当通过单击blob上的"Generate令牌和URL“按钮手动生成SAS URL时,我可以通过将其复制到浏览器中的url字段来访问图像。
发布于 2022-10-06 06:55:33
正如@Gaurav_Mantri所建议的, SAS令牌在我得到的SAS URL中出现了两次.
造成错误URL的代码:
const sasToken = generateBlobSASQueryParameters(
sasOptions,
sharedKeyCredential
).toString();
const blobSasUri = `${
containerClient.getBlockBlobClient(blobName).url
}?${sasToken}`;在我看来,我已经为特定的blob生成了一个SAS令牌,然后使用
containerClient.getBlockBlobClient(blobName).url
我已经获得了完整的 blob (其中已经包含了标记)。之后,我再次将生成的SAS URL连接起来,因此得到了一个错误的URL。
Fix:
const sasToken = generateBlobSASQueryParameters(
sasOptions,
sharedKeyCredential
).toString(); // For generating the SAS token
const blobURL = containerClient.getBlockBlobClient(blobName).url;
// Afterwards, getting the full blob URL (with the new SAS token already concatinated to it)https://stackoverflow.com/questions/73969243
复制相似问题