curl 发送到Azure Blob存储匿名请求标头看起来如何

gywdnpxw  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(176)

我是Azure的新手,我正在尝试使用cURL获取Azure blob中的项列表。我已配置对blob

的匿名读取访问
但是,当我运行此请求时:curl -X GET -H "x-ms-version:2021-08-06" -H "x-ms-date:$(date -Ru | sed 's/\+0000/GMT/')" https://name.blob.core.windows.net/name2我得到:Server failed to authenticate the request. Please refer to the information in the www-authenticate header
我尝试添加"Authorization:Basic""Authorization:Anonumous",但不起作用。
我还尝试了其他方式与SAS令牌URL

因此,我的请求如下所示:curl -X GET -H "x-ms-version:2021-08-06" -H "x-ms-date:$(date -Ru | sed 's/\+0000/GMT/')" 'https://name.blob.core.windows.net/name2?sp=r&st=2022-10-12T19:53:09Z&se=2022-10-13T03:53:09Z&skoid=c49c35ef-99c7-49c5-835b-92418a2ccdb6&sktid=b1404f36-3c1b-42e2-9c8d-1b0066b5ff86&skt=2022-10-12T19:53:09Z&ske=2022-10-13T03:53:09Z&sks=b&skv=2021-06-08&spr=https&sv=2021-06-08&sr=c&sig=token'
但这就给了我们:

<AuthenticationErrorDetail>Signature did not match. String to sign used was r
2022-10-12T19:53:09Z
2022-10-13T03:53:09Z
/blob/name/$root
c49c35ef-99c7-49c5-835b-92418a2ccdb6
b1404f36-3c1b-42e2-9c8d-1b0066b5ff86
2022-10-12T19:53:09Z
2022-10-13T03:53:09Z
b
2021-06-08



https
2021-06-08
c




</AuthenticationErrorDetail></Error>

如何解决这两个问题?

gcxthw6b

gcxthw6b1#

当您将访问级别设置为“Blob”时,您需要使用blob的完整URL(例如https://account.blob.core.windows.net/container-name/blob-name)来访问blob,而不需要任何授权信息。
但是,你为GET请求指定的URL是https://name.blob.core.windows.net/name2。由于Blob URL不包括容器名称,Azure存储将尝试在$root容器中查找Blob。如果你已在名为alldatastorage的容器(基于你的屏幕截图)上设置权限,而不是在$root容器上设置权限,则会收到403错误。
要解决此问题,您只需使用blob的完整URL。例如,如果您的blob名称为myfile.txt,则您的URL应为https://name.blob.core.windows.net/alldatastorage/myfile.txt。在这种情况下,您不会收到此错误。

相关问题