2016-05-04 73 views
0

azure blob存儲似乎在執行字節範圍請求時錯誤地設置了內容長度。以前的版本不支持開放式請求,所以我認爲通過加入最新版本,我的問題將得到解決(2015-04-05)。Azure Blob存儲內容長度

在這裏,我已經對Azure blob中的文件執行GET請求並打印出標題。我期望內容長度仍然是剩餘255個字節,而是我找到整個文件大小(15601108255)

(server-1)➜ server-1 git:(faster_calls) ✗ curl -I http://ga4ghstore.blob.core.windows.net/testing/HG00096.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam --header "x-ms-version: 2015-04-05" --range 15601108000- HTTP/1.1 200 OK Content-Length: 15601108255 Content-Type: application/octet-stream Content-MD5: M26lWRO8Jhtyh1vSWXUwRg== Last-Modified: Tue, 26 Apr 2016 18:30:11 GMT Accept-Ranges: bytes ETag: "0x8D36E00CD845EC7" Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: 2bf052dc-0001-013d-256d-a5a7a7000000 x-ms-version: 2015-04-05 x-ms-write-protection: false x-ms-lease-status: unlocked x-ms-lease-state: available x-ms-blob-type: BlockBlob Date: Tue, 03 May 2016 18:55:49 GMT

範圍請求表現爲正常處理,因爲在中,返回的有效載荷是但是,預期的大小會將標頭與Amazon爲同一文件返回的內容進行比較。 「內容長度」標題是預期的「255」。

(server-1)➜ server-1 git:(faster_calls) ✗ curl -I --range 15601108000- http://s3.amazonaws.com/1000genomes/phase3/data/HG00096/alignment/HG00096.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam
HTTP/1.1 206 Partial Content x-amz-id-2: w6IO4ezWj2BBTkHA09D9gNRZgkmAQJ8khqc6O9t+Xr+xHmZKvwVTNd0vLCpaVcKoVl/2jZUskug= x-amz-request-id: CE8F86CD94173F51 Date: Tue, 03 May 2016 18:59:22 GMT x-amz-meta-s3cmd-attrs: uid:1000/gname:ubuntu/uname:ubuntu/gid:1000/mode:33204/mtime:1431500614/atime:1431500346/ctime:1431500614 Last-Modified: Wed, 13 May 2015 06:57:53 GMT ETag: "efd6d57b0f27974f6845f4e67a99c1a6-117" Accept-Ranges: bytes Content-Range: bytes 15601108000-15601108254/15601108255 Content-Type: application/gzip; charset=binary Content-Length: 255 Server: AmazonS3

回答

0

我只是想用cUrl通過同一命令我的機器上,如果我的理解是正確的,當你執行與-I選項curl命令你基本上做出HEAD請求而不是一個GET請求。本質上,您的命令使Get Blob Properties REST API調用不會返回數據。

因此,在Azure的情況下,響應是正確的,因爲Content-Length響應標頭應告訴您blob的大小。如果您想查看返回的大小,則需要使用-G(Get)參數進行cUrl請求。然後你會看到只有255個字節被返回。

+0

謝謝Gaurav!這有幫助!看起來亞馬遜和微軟不同地實施HEAD請求。我做了curl -vG並找到了具有正確內容長度的206。 – david4096

+0

儘管如此,我仍然認爲這是一個錯誤:「響應HEAD請求而包含在HTTP頭中的元信息應該與爲響應GET請求而發送的信息相同。」(http://www.w3.org /Protocols/rfc2616/rfc2616-sec9.html) – david4096