You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

相同参数下generate_blob_sas()失败但generate_container_sas()正常的原因

问题解决:generate_blob_sas生成的SAS令牌认证失败

核心问题

你代码中stg_blob变量的开头多了一个斜杠:/folder1/folder2/blob.jpg,这是导致签名不匹配的直接原因。

原因分析

Azure Storage的generate_blob_sas()函数要求blob_name参数是容器内的相对路径,不需要以斜杠开头。当你传入带开头斜杠的路径时,生成SAS签名时会把这个斜杠包含在签名字符串里(从错误信息的String to sign可以看到:/blob/<account-name>/<container-name>/<folder1>/<folder2>/<blob-name>.jpg),但实际访问Blob时的URL路径是mycontainer/folder1/folder2/blob-name.jpg(没有开头斜杠),两者路径不一致,导致签名验证失败。

而generate_container_sas()不受这个影响,因为它只验证容器层级的路径,不需要Blob的具体路径。

修复方案

修改stg_blob变量,去掉开头的斜杠:

stg_blob = 'folder1/folder2/blob.jpg'

重新生成SAS令牌后,拼接的URL和签名字符串会匹配,认证就能正常通过。

验证修改后的效果

修改后,生成签名时的String to sign会变成:
r 2023-04-17T22:37:45Z /blob/<account-name>/<container-name>/folder1/folder2/blob-name.jpg 2021-12-02 b
和实际访问的Blob路径完全对应,签名验证即可通过。

内容的提问来源于stack exchange,提问作者ericOnline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:05:02