用於獲取某個Object,此操作要求用戶對該Object有讀許可權。

請求文法

GET /ObjectName HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
Range: bytes=ByteRange(可選)

請求參數(Request Parameters)

OSS支援用戶在發送GET請求時,可以自訂OSS返回請求中的一些Header,前提條件是用戶發送的GET請求必須攜帶簽名。這些Header包括:

名稱 類型 描述
response-content-type 字元串 設定OSS返回請求的content-type頭

預設值:無

response-content-language 字元串 設定OSS返回請求的content-language頭

預設值:無

response-expires 字元串 設定OSS返回請求的expires頭

預設值:無

response-cache-control 字元串 設定OSS返回請求的cache-control頭

預設值:無

response-content-disposition 字元串 設定OSS返回請求的content-disposition頭

預設值:無

response-content-encoding 字元串 設定OSS返回請求的content-encoding頭

預設值:無

請求Header

表 1. 請求Header
名稱 類型 描述
Range 字元串 指定檔案傳輸的範圍。如,設定 bytes=0-9,表示傳送第0到第9這10個字元。

預設值:無

If-Modified-Since 字元串 如果指定的時間早於實際修改時間,則正常傳送檔案,並返回200 OK;否則返回304 not modified

預設值:無

時間格式:GMT時間,例如Fri, 13 Nov 2015 14:47:53 GMT

If-Unmodified-Since 字元串 如果傳入參數中的時間等於或者晚於檔案實際修改時間,則正常傳輸檔案,並返回200 OK;否則返回412 precondition failed錯誤

預設值:無

時間格式:GMT時間,例如Fri, 13 Nov 2015 14:47:53 GMT

If-Match 字元串 如果傳入期望的ETag和object的 ETag匹配,則正常傳輸檔案,並返回200 OK;否則返回412 precondition failed錯誤

預設值:無

If-None-Match 字元串 如果傳入的ETag值和Object的ETag不匹配,則正常傳輸檔案,並返回200 OK;否則返回304 Not Modified

預設值:無

細節分析

  • GetObject通過range參數可以支援斷點續傳,對於比較大的Object建議使用該功能。
  • 如果在要求標頭中使用Range參數;則返回消息中會包含整個檔案的長度和此次返回的範圍,例如:Content-Range: bytes 0-9/44,表示整個檔案長度為44,此次返回的範圍為0-9。如果不符合範圍規範,則傳送整個檔案,並且不在結果中提及Content-Range。
  • 如果“If-Modified-Since”元素中設定的時間不符合規範,直接返迴文件,並返回200 OK。
  • If-Modified-Since和If-Unmodified-Since可以同時存在,If-Match和If-None-Match也可以同時存在。
  • 如果包含If-Unmodified-Since並且不符合或者包含If-Match並且不符合,返回412 precondition failed
  • 如果包含If-Modified-Since並且不符合或者包含If-None-Match並且不符合,返回304 Not Modified
  • 如果檔案不存在返回404 Not Found錯誤。錯誤碼:NoSuchKey。
  • OSS不支援在匿名訪問的GET請求中,通過請求參數來自訂返回請求的header。
  • 在自訂OSS返回請求中的一些Header時,只有請求處理成功(即返回碼為200時),OSS才會將請求的header設定成用戶GET請求參數中指定的值。
  • 若該Object為進行伺服器端熵編碼加密儲存的,則在GET請求時會自動解密返回給用戶,並且在回應標頭中,會返回x-oss-server-side-encryption,其值表明該Object的伺服器端密碼編譯演算法。
  • 需要將返回內容進行 GZIP壓縮傳輸的用戶,需要在請求的Header中顯示方式加入 Accept-Encoding:gzip,OSS會根據檔案的Content-Type和檔案大小,判斷是否返回給用戶經過GZIP 壓縮的數據。如果採用了GZIP壓縮則不會附帶etag 資訊。目前OSS支援GZIP壓縮的Content-Type為HTML、Javascript、CSS、XML、RSS、Json,檔案大小需不小於1k。
  • 如果檔案類型為符號連結,返回目標檔案的內容。並且, 回應標頭中Content-LengthETagContent-Md5 均為目標檔案的元資訊;Last-Modified是目標檔案和符號連結的最大值;其他均為符號連結的元資訊。
  • 如果檔案類型為符號連結,並且目標檔案不存在,返回404 Not Found錯誤。錯誤碼:SymlinkTargetNotExist。
  • 如果檔案類型為符號連結,並且目標檔案類型是符號連結,返回400 Bad request錯誤。錯誤碼:InvalidTargetType。
  • 對於Archive歸檔類型,Object下載需要提交Restore請求,並等待Restore完成;只有在Object的Restore操作完成且逾時前,Object才能被下載:
    • 如果沒有提交Restore請求,或者上一次提交Restore已經逾時, 則返回403錯,錯誤碼為:InvalidObjectState。
    • 或者已經提交Restore請求,但數據的Restore操作還沒有完成, 則返回403錯,錯誤碼為:InvalidObjectState。
    • 只有Restore完成,且沒有逾時,數據才能直接下載。

樣本

請求樣本:

GET /oss.jpg HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 24 Feb 2012 06:38:30 GMT
Authorization:OSS qn6qrrqxo2oawuk53otfjbyc:UNQDb7GapEgJCZkcde6OhZ9Jfe8=

返回樣本:

HTTP/1.1 200 OK
x-oss-request-id: 3a89276f-2e2d-7965-3ff9-51c875b99c41
x-oss-object-type: Normal
Date: Fri, 24 Feb 2012 06:38:30 GMT
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
Content-Type: image/jpg
Content-Length: 344606
Server: AliyunOSS
[344606 bytes of object data]

Range請求樣本:

GET //oss.jpg HTTP/1.1
Host:oss-example. oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Feb 2012 05:38:42 GMT
Range: bytes=100-900
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:qZzjF3DUtd+yK16BdhGtFcCVknM=

返回樣本:

HTTP/1.1 206 Partial Content
x-oss-request-id: 28f6508f-15ea-8224-234e-c0ce40734b89
x-oss-object-type: Normal
Date: Fri, 28 Feb 2012 05:38:42 GMT
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
Accept-Ranges: bytes
Content-Range: bytes 100-900/344606
Content-Type: image/jpg
Content-Length: 801
Server: AliyunOSS
[801 bytes of object data]

自訂返回消息頭的請求樣本:

GET /oss.jpg?response-expires=Thu%2C%2001%20Feb%202012%2017%3A00%3A00%20GMT& response-content-type=text&response-cache-control=No-cache&response-content-disposition=attachment%253B%2520filename%253Dtesting.txt&response-content-encoding=utf-8&response-content-language=%E4%B8%AD%E6%96%87 HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com:
Date: Fri, 24 Feb 2012 06:09:48 GMT

返回樣本:

HTTP/1.1 200 OK
x-oss-request-id: 559CC9BDC755F95A64485981
x-oss-object-type: Normal
Date: Fri, 24 Feb 2012 06:09:48 GMT 
Last-Modified: Fri, 24 Feb 2012 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
Content-Length: 344606
Connection: keep-alive
Content-disposition: attachment; filename:testing.txt
Content-language: 中文
Content-encoding: utf-8
Content-type: text
Cache-control: no-cache
Expires: Fri, 24 Feb 2012 17:00:00 GMT
Server: AliyunOSS
[344606 bytes of object data]

符號連結的請求樣本:

GET /link-to-oss.jpg HTTP/1.1
Accept-Encoding: identity
Date: Tue, 08 Nov 2016 03:17:58 GMT
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Authorization:OSS qn6qrrqxo2oawuk53otfjbyc:qZzjF3DUtd+yK16BdhGtFcCVknM=

返回樣本:

HTTP/1.1 200 OK
Server: AliyunOSS
Date: Tue, 08 Nov 2016 03:17:58 GMT
Content-Type: application/octet-stream
Content-Length: 20
Connection: keep-alive
x-oss-request-id: 582143E6D3436A212ADCC87D
Accept-Ranges: bytes
ETag: "8086265EFC0211ED1F9A2F09BF462227"
Last-Modified: Tue, 08 Nov 2016 03:17:58 GMT
x-oss-object-type: Symlink
Content-MD5: gIYmXvwCEe0fmi8Jv0YiJw==

Archive類型Object的Restore操作已經完成時的請求樣本:

GET /oss.jpg HTTP/1.1
Host: oss-archive-example.oss-cn-hangzhou.aliyuncs.com
Date: Sat, 15 Apr 2017 09:38:30 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:zUglwRPGkbByZxm1+y4eyu+NIUs=

返回樣本

HTTP/1.1 200 OK
x-oss-request-id: 58F723894529F18D7F000053
x-oss-object-type: Normal
x-oss-restore: ongoing-request="false", expiry-date="Sun, 16 Apr 2017 08:12:33 GMT"
Date: Sat, 15 Apr 2017 09:38:30 GMT
Last-Modified: Sat, 15 Apr 2017 06:07:48 GMT
ETag: "5B3C1A2E053D763E1B002CC607C5A0FE "
Content-Type: image/jpg
Content-Length: 344606
Server: AliyunOSS
[354606 bytes of object data]