使用curl+SAS令牌调用Azure Blob Storage REST API列Blob遇认证失败
问题分析与解决
核心错误点
- URL格式错误:第一个curl命令中,SAS参数前多了一个多余的
?,导致签名格式不合法(对应Signature fields not well formed错误)。原URL里comp=list&?sv=应改为comp=list&sv=——URL的查询参数仅需第一个?,后续参数统一用&连接。 - SAS传递方式错误:后续尝试用
Authorization头传递SAS令牌是错误逻辑,容器级SAS需直接附加在URL的查询参数中,无需通过HTTP头传递。
正确的curl命令
将SAS令牌正确附加到URL末尾,移除多余的?,且无需额外的Authorization头:
curl -X GET "https://dat3473spa01cfeMtest.blob.core.windows.net/90480397-91234697-218-test-dir01?restype=container&comp=list&sv=2019-02-02&sr=c&sig=QlSozpknsTcR4frUK08%2FrcGaUGY893GzFN1Lyhl74Ao%3D&se=2024-10-24T07%3A50%3A11Z&sp=racwdl"
额外注意事项
- SAS有效期:你的SAS令牌有效期截止到
2024-10-24T07:50:11Z,如果执行命令时已超过该时间,需重新生成有效SAS令牌。 - API版本一致性:SAS使用的API版本为
2019-02-02,无需额外指定x-ms-version头;若需使用更高版本,需确保SAS生成时的版本与请求版本一致。
内容的提问来源于stack exchange,提问作者Chazg76
相关产品推荐
相关产品推荐

