Azure Blob 存储功能突然出现 403 错误

标签 azure azure-blob-storage

几个月前,我使用 javascript 编写了一个 api 端点来获取 Azure blob 的 saskey。从那时起它就运作良好。就在昨天,它开始出现 403 错误。我已经好几个月没有碰过该文件了,也没有访问我的 Azure 帐户进行更改。在这里查看了一些帖子并检查了我的防火墙(正确配置),PC上的日期是否正确,甚至尝试重置并使用我的访问 key 2。仍然遇到同样的错误。 Azure 使用 saskey 进行响应,但它无效。任何有关如何解决此问题的建议将不胜感激。代码如下:

api.js(mediaLoc 是文件名):

app.get("/getSASKey", checkAuth, async function (req, res) {
  var mediaLoc = req.query.mediaLoc;
  console.log('mediaLoc is: ', mediaLoc)
  blobResult = await bloboperations.sasKey(mediaLoc).then((result) => {
  console.log('api about to send sasKey back as: ', result)
      res.send(result);
  });
});

bloboperations.sasKey:

async function sasKey(mediaLoc) {
    try {
    console.log('starting sasKey in bloboperations mediaLoc:', mediaLoc)
    var storage = require("@azure/storage-blob")
    const accountname = process.env.BLOB_ACCT_NAME;
    const key = process.env.BLOB_KEY;
    const cerds = new storage.StorageSharedKeyCredential(accountname,key);
    const blobServiceClient = new storage.BlobServiceClient(`https://${accountname}.blob.core.windows.net`,cerds);
    const containerName="dev";
    const client =blobServiceClient.getContainerClient(containerName)
    const blobName=mediaLoc;
    const blobClient = client.getBlobClient(blobName);
    const blobSAS = storage.generateBlobSASQueryParameters({
      containerName, 
      blobName, 
      permissions: storage.BlobSASPermissions.parse("racwd"), 
      startsOn: new Date(),
      expiresOn: new Date(new Date().valueOf() + 86400)
    },
    cerds 
  ).toString();
    const sasUrl= blobClient.url+"?"+blobSAS;
    return sasUrl
    }
    catch (error) {
        console.log(error);
    }
}

编辑/附加信息: 当我发布此编辑后,我以为我在 URL 中看到了空格。仔细查看并将其复制到记事本后,我发现根本没有空格。太糟糕了,我希望事情能这么简单!

我从 Azure 返回的 saskey 是:

sv=2020-06-12&st=2021-07-25T20%3A58%3A53Z&se=2021-07-25T21%3A00%3A20Z&sr=b&sp=racwd&sig=q6ylvdvxFKuR1zHmK2sa%2FwjlDjRoqtA6Jt47vZ0pQt4%3D

我将其附加到:https://MYACCTHERE.blob.core.windows.net/dev/0f0djx0dshmp316324a060040a9b1624826368094.jpg? (0f0djx0dshmp316324a060040a9b1624826368094.jpg 是 Azure 上的 blob 名称。)

获取网址:

https://s4udev.blob.core.windows.net/dev/0f0djx0dshmp316324a060040a9b1624826368094.jpg?sv=2020-06-12&st=2021-07-25T20%3A58%3A53Z&se=2021-07-25T21%3A00%3A20Z&sr=b&sp=racwd&sig=q6ylvdvxFKuR1zHmK2sa%2FwjlDjRoqtA6Jt47vZ0pQt4%3D

(显然,这是昨天的,所以它已经过期了。)在生成它时,我尝试将其直接复制并粘贴到浏览器地址行中,但出现了相同的 403 错误。

我在前端使用Vue2。该 url 作为变量 sasKey 传递给 Vue,并使用以下代码放置在页面上:

  <v-img 
  class="white--text align-end imageTag"
  max-width="10rem"
  height="100%"
  :src="sasKey"
  >
  </v-img>

最佳答案

我的答案是在 Gaurav Mantri 的评论中找到的。我使用了 url 编码,它解决了问题。

关于Azure Blob 存储功能突然出现 403 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68521718/

相关文章:

azure - 重复注册会有不好的后果吗?

azure - 将文件从本地复制到 azure

python - 使用 Python 为 Azure Blob 存储中的目录生成 SAS token

Azure Functions 访问 Azure 存储帐户防火墙

azure - 在 Azure Blob 存储的 img 标记中使用共享访问签名 URI

javascript - React应用程序未在azure应用程序服务中启动

Azure Devops 管道 Yaml 'Toggle Block Comment' 不起作用

azure - 仅当分配方法是静态时,如何从 Arm 模板输出公共(public) IP 地址?

c# - 如何在c#中将图像从本地系统上传到azure blob存储

php - 具有 Blob 存储的 Azure PHP SDK 中的 x-ms-version header 无效