更新 Azure Blob 存储中的元数据 BlockBlob

Update metadata BlockBlob in Azure Blob Storage

我一直在尝试使用 Insomnia.I 将元数据更新到我的 BlockBlob 已设法使用 header 清除元数据(参数 json 为空):

enter image description here

与 strToSign:

"PUT\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Fri, 11 Mar 2022 09:24:07 GMT\nx-ms-version:2021-04-10\n/myaccount/search/file_6444\ncomp:metadata"

但是如果我想更新元数据,在 header 中发送 x-ms-meta-ide:2021(参数 json 为空),它不起作用,它 returns 错误:AuthenticationErrorDetail 在 HTTP 请求 'XXXXXXXXX' 中找到的 MAC 签名与任何计算签名不同。

strToSign 是:

"PUT\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Fri, 11 Mar 2022 09:24:07 GMT\nx-ms-version:2021-04-10\nx-ms-meta-ide:2021\n/myaccount/search/file_6444\ncomp:metadata"

为什么它不起作用??谢谢

请将要签名的字符串更改为:

PUT\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Fri, 11 Mar 2022 09:24:07 GMT\nx-ms-meta-ide:2021\nx-ms-version:2021-04-10\n/myaccount/search/file_6444\ncomp:metadata

本质上,问题是 headers 必须在要签名的字符串中按字母顺序排序,因此 headers 的顺序将是 x-ms-datex-ms-meta-ide,然后x-ms-version.

更多详情,请看这个link:https://docs.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key#constructing-the-canonicalized-headers-string