无法使用REST API和curl从Azure文件存储中检索文件列表

时间:2018-08-13 15:33:35

标签: rest azure curl azure-storage

我正在尝试使用REST API和curl来检索存储在Azure File Storage帐户中的文件列表,我使用共享密钥根据文档正确地计算了标头,但是curl请求既不返回文件列表也不返回文件列表任何错误消息。

这是我的要求和答复:

curl -v -H "Authorization: SharedKey myaccount:bAJKeY0xyOZLSJOLDoHfXXOqfA4kOGo1DVFP3BejhY8=" -H "x-ms-date:Mon, 13 Aug 2018 15:22:31 GMT" -H "x-ms-version:2017-07-29" --url https://myaccount.file.core.windows.net/myshare/mydir?restype=directory&comp=list

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 52.239.140.8...

* Connected to myaccount.file.core.windows.net (52.239.140.8) port 443 (#0)
* found 148 certificates in /etc/ssl/certs/ca-certificates.crt
* found 597 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
*    server certificate verification OK
*    server certificate status verification SKIPPED
*    common name: *.file.core.windows.net (matched)
*    server certificate expiration date OK
*    server certificate activation date OK
*    certificate public key: RSA
*    certificate version: #3
*    subject: CN=*.file.core.windows.net
*    start date: Thu, 09 Nov 2017 05:42:03 GMT
*    expire date: Sat, 09 Nov 2019 05:42:03 GMT
*    issuer: C=US,ST=Washington,L=Redmond,O=Microsoft Corporation,OU=Microsoft IT,CN=Microsoft IT TLS CA 5
*    compression: NULL
* ALPN, server did not agree to a protocol

GET /myshare/mydir?restype=directory HTTP/1.1

Host: myaccount.file.core.windows.net

User-Agent: curl/7.47.0

Accept: */*

Authorization: SharedKey 
myaccount:bAJKeY0xyOZLSJOLDoHfXXOqfA4kOGo1DVFP3BejhY8=
x-ms-date:Mon, 13 Aug 2018 15:22:31 GMT
x-ms-version:2017-07-29

HTTP/1.1 200 OK

Transfer-Encoding: chunked

Last-Modified: Fri, 27 Apr 2018 16:11:14 GMT

ETag: "0x8D5AC597FF96B3D"

Server: Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0

x-ms-request-id: 75d6d7c8-f01a-0011-5b19-33104d000000

x-ms-version: 2017-07-29

x-ms-server-encrypted: true

Date: Mon, 13 Aug 2018 15:22:29 GMT

{ [5 bytes data]
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connection #0 to host myaccount.file.core.windows.net left intact

不返回带有文件列表的XML。 我尝试在myaccount下检索共享列表,该列表可以正常工作,也可以下载单个文件,但是我无法收到目录下的文件列表。

1 个答案:

答案 0 :(得分:0)

两点:

  1. 在curl命令中查看网址

    --url https://myaccount.file.core.windows.net/myshare/mydir?restype=directory&comp=list
    

    您忘记将URL放在""中,因此参数&comp=list被剪切了,因为&是保留符号。输出GET /myshare/mydir?restype=directory HTTP/1.1也证明了这一点。

  2. 通常来说,如果url缺少comp参数,则应该收到错误消息AuthenticationFailed,因为comp用于生成SharedKey。但是,您使用共享密钥获得了HTTP/1.1 200 OK

    基于您获得的响应标头,我想您在构造SharedKey时也错过了comp,因此SharedKey和url能够正确获取directory properties