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

如何使用容器级SAS令牌通过HTTP调用下载Azure存储内zip文件

问题原因

你生成的是容器范围的Account Key SAS,URL里的sr=c参数就代表这是容器级SAS,鉴权范围覆盖整个data容器下的所有Blob,但你当前的请求地址只指向容器根路径,没有指定具体要访问的.zip文件路径;同时你给SAS只分配了读取(sp=r)权限,没有分配列表权限,直接请求容器根路径自然会触发授权错误。
你生成SAS的操作界面参考:
Azure Storage容器SAS生成界面

纯HTTP下载正确操作

不需要额外工具,直接按以下步骤构造请求即可:

  • 提取现有SAS URL中?及之后的完整鉴权参数字符串,不要修改任何参数内容。
  • 拼接具体Blob文件的访问地址,格式如下:
    https://<STORAGE_ACCOUNT>.blob.core.windows.net/data/<你的.zip文件完整路径>?<提取到的完整SAS鉴权参数>
    
    举个例子,如果容器根目录下的zip文件名为test.zip,最终请求地址为:
    https://<STORAGE_ACCOUNT>.blob.core.windows.net/data/test.zip?sp=r&st=2022-06-06T15:23:31Z&se=2022-06-06T23:23:31Z&spr=https&sv=2020-08-04&sr=c&sig=<SIGNATURE>
    
    如果zip文件存放在容器的子目录下,比如backup/june/data.zip,把对应的相对路径补到data/后面即可。
  • 直接向构造好的地址发送HTTP GET请求,不需要额外添加Authorization请求头,SAS参数本身已经包含完整鉴权信息,就能直接下载文件。
常见鉴权失败排查点
  • 必须使用HTTPS协议发起请求:你生成的SAS带有spr=https参数,强制要求HTTPS协议,HTTP请求会直接被拒绝授权。
  • 确认请求时间在SAS有效期内:你示例中的SAS有效期为UTC时间2022-06-06 15:23:31到2022-06-06 23:23:31,超出时间窗口的请求会鉴权失败。
  • 不要修改SAS参数的任何字符:包括签名sig、权限sp、有效期se在内的所有参数,任意字符改动都会导致签名校验不通过。
  • 文件名不要写错:注意文件名大小写,Azure Blob的文件名是大小写敏感的,路径和文件名不匹配也会报授权或不存在错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 23:57:35