简体   繁体   English

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

[英]Cannot retrieve file list from Azure File Storage using REST API and curl

I'm trying to retrieve the list of files stored in an Azure File Storage account using the REST API and curl, I correctly computed headers according to the documentation by using the shared key , but curl request neither returns the files list nor any error message. 我正在尝试使用REST API和curl来检索存储在Azure File Storage帐户中的文件列表,我使用共享密钥根据文档正确地计算了标头,但是curl请求既不返回文件列表也不出现任何错误消息。

Here is my request and the response: 这是我的要求和回复:

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

No XML with file list is returned. 没有返回带有文件列表的XML。 I tried to retrieve the share list under myaccount and it works, as well as downloading a single file, but I cannot receive the list of files under a directory. 我尝试在myaccount下检索共享列表,该列表可以正常工作,也可以下载单个文件,但是我无法收到目录下的文件列表。

Two points: 两点:

  1. See url in curl command 在curl命令中查看url

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

    You forget to put the url in "" so the parameter &comp=list is cut because & is a reserved sign. 您忘记将url放在""从而剪切了&comp=list ,因为&是保留符号。 This is also proved by the output GET /myshare/mydir?restype=directory HTTP/1.1 . 输出GET /myshare/mydir?restype=directory HTTP/1.1也证明了这一点。

  2. Commonly speaking, if the url misses the comp parameter, we should get error message AuthenticationFailed because comp is used in generating SharedKey. 通常来说,如果url缺少comp参数,则应该获得错误消息AuthenticationFailed,因为comp是用于生成SharedKey的。 However you get HTTP/1.1 200 OK with the SharedKey. 但是,使用SharedKey会得到HTTP/1.1 200 OK

    Based on the response headers you get, I guess you also missed the comp when constructing the SharedKey, so the SharedKey and url is capable to get directory properties correctly. 根据您获得的响应标头,我猜您在构造SharedKey时也错过了comp ,因此SharedKey和url能够正确获取目录属性

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM