日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

如何通過HTTP Range請求分段獲取OSS資源

說明

本文檔可能包含第三方產(chǎn)品信息,該信息僅供參考。阿里云對第三方產(chǎn)品的性能、可靠性以及操作可能帶來的潛在影響,不做任何暗示或其他形式的承諾。

概述

本文主要介紹如何通過HTTP Range請求分段獲取OSS資源。

詳細信息

上傳或者下載OSS中的大文件(超過100 MB)時,如果傳輸過程中受到網(wǎng)絡(luò)環(huán)境影響,則會傳輸失敗。在上傳過程中,可以調(diào)用UploadPart進行分片上傳。而下載資源時,可以通過HTTP Range請求獲取大文件的部分內(nèi)容,示例如下。

Get /ObjectName HTTP/1.1
Host:xxxx.oss-cn-hangzhou.aliyuncs.com
Date:Tue, 17 Nov 2015 17:27:45 GMT
Authorization:SignatureValue
Range:bytes=[$ByteRange]
說明

[$ByteRange]指請求資源的范圍,單位為“Byte(字節(jié))”,示例如下:

  • Range: bytes=0-499表示第0~499字節(jié)范圍的內(nèi)容。

  • Range: bytes=500-999表示第500~999字節(jié)范圍的內(nèi)容。

  • Range: bytes=-500表示最后500字節(jié)的內(nèi)容。

  • Range: bytes=500-表示從第500字節(jié)開始到文件結(jié)束部分的內(nèi)容。

  • Range: bytes=0-表示第一個字節(jié)到最后一個字節(jié),即完整的文件內(nèi)容。

  • OSS不支持多Range參數(shù),即不支持指定多個范圍。如果指定多個范圍,OSS只返回第一個Range的數(shù)據(jù),例如:Range:bytes=0-499,500-999,OSS只返回0~499字節(jié)范圍的內(nèi)容。

  • [$ByteRange]有效區(qū)間在0至content-length - 1的范圍內(nèi)。

如果HTTP Range請求合法,響應(yīng)返回值為206并在響應(yīng)頭中包含Content-Range。如果HTTP Range請求不合法,或者指定范圍不在有效區(qū)間,會導(dǎo)致Range不生效,響應(yīng)返回值為200,并傳送整個Object內(nèi)容。如下為HTTP Range請求不合法的示例及錯誤說明。

說明

此處假設(shè)Object資源大小為1000字節(jié),Range有效區(qū)間為0~999。為避免指定的Range超出范圍,可在Range讀取前進行HeadObject請求,獲取對象大小。

  • Range: byte=0-499:格式錯誤,byte應(yīng)為bytes。

  • Range: bytes=0-1000:末字節(jié)1000超出有效區(qū)間。

  • Range: bytes=1000-2000:指定范圍超出有效區(qū)間。

  • Range: bytes=1000-:首字節(jié)超出有效區(qū)間。

  • Range: bytes=-2000:指定范圍超出有效區(qū)間。

可以通過如下命令測試Range參數(shù)的有效性。

curl -r 0-100 http://xxxx.oss-cn-hangzhou.aliyuncs.com/xx.zip -o /tmp/xx1.zip -v

兼容行為

使用HTTP Range時,增加請求頭x-oss-range-behavior:standard,可以改變指定范圍不在有效區(qū)間時OSS的行為。行為改變的示例如下:

說明

此處假設(shè)Object資源大小為1000字節(jié),Range有效區(qū)間為0~999。如通過HTTP Range請求獲取大文件的部分內(nèi)容時,因選取了無效的范圍,導(dǎo)致OSS返回InvalidRange錯誤碼,請參見OSS返回416錯誤進行解決,詳細錯誤信息如下:

The requested range cannot be satisfied

  • Range: bytes=500-2000:末字節(jié)超出有效區(qū)間,返回500~999字節(jié)范圍內(nèi)容。

  • Range: bytes=1000-2000:首字節(jié)超出有效區(qū)間,返回錯誤416 (InvalidRange)

  • Range: bytes=1000-:首字節(jié)超出有效區(qū)間,返回錯誤416 (InvalidRange)

  • Range: bytes=-2000:指定范圍超出有效區(qū)間,返回0~999字節(jié),即完整的文件內(nèi)容。

示例

針對上述內(nèi)容,本文提供如下HTTP Range請求示例。

說明

此處假設(shè)Object資源大小為1000字節(jié),Range有效區(qū)間為0~999。

正常請求示例

  • 請求Object資源0~499字節(jié)范圍內(nèi)的內(nèi)容。

    GET /ObjectName
    Range: bytes=0-499
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 02:51:30 GMT
    Authorization: Sigature
    
    206 (Partial Content)
    content-length: 500
    content-range: bytes 0-499/1000
    connection: keep-alive
    etag: "CACF99600561A31D494569C979E6FB81"
    x-oss-request-id: 5DA928B227D52731327DE078
    date: Fri, 18 Oct 2019 02:51:30 GMT
    [500 bytes of object data]

  • 請求Object資源第500字節(jié)到文件結(jié)尾的內(nèi)容。

    GET /ObjectName
    Range: bytes=500-
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 03:24:39 GMT
    Authorization: Signature
    
    206 (Partial Content)
    content-length: 500
    content-range: bytes 500-999/1000
    etag: "CACF99600561A31D494569C979E6FB81"
    x-oss-request-id: 5DA9307750EBE33332E3720A
    date: Fri, 18 Oct 2019 03:24:39 GMT
    [500 bytes of object data]

  • 請求Object資源最后500字節(jié)的內(nèi)容。

    GET /ObjectName
    Range: bytes=-500
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 03:23:22 GMT
    Authorization: Signature
    
    206 (Partial Content)
    content-length: 500
    content-range: bytes 500-999/1000
    etag: "CACF99600561A31D494569C979E6FB81"
    x-oss-request-id: 5DA9302A6646AC37397F7039
    date: Fri, 18 Oct 2019 03:23:22 GMT
    [500 bytes of object data]

超出范圍的請求示例

  • 末字節(jié)1000超出有效區(qū)間,導(dǎo)致Range不生效,響應(yīng)返回值為200,并傳送整個Object內(nèi)容。

    GET /ObjectName
    Range: bytes=0-1000
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 03:00:02 GMT
    Authorization: Signature
    
    200 (OK)
    content-length: 1000
    etag: "CACF99600561A31D494569C979E6FB81"
    x-oss-request-id: 5DA92AB204321E36347F3E7D
    date: Fri, 18 Oct 2019 03:00:02 GMT
    [1000 bytes of object data]

  • 指定范圍超出有效區(qū)間,導(dǎo)致Range不生效,響應(yīng)返回值為200,并傳送整個Object內(nèi)容。

    GET /ObjectName
    Range: bytes=1000-2000
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 02:56:24 GMT
    Authorization: Sigature
    
    200 (OK)
    content-length: 1000
    etag: "CACF99600561A31D494569C979E6FB81"
    x-oss-request-id: 5DA929D9CCCC823835CBE134
    date: Fri, 18 Oct 2019 02:56:25 GMT
    [1000 bytes of object data]

兼容行為請求示例

  • 增加x-oss-range-behavior:standard請求頭,末字節(jié)超出有效區(qū)間,返回500~999字節(jié)范圍的內(nèi)容。

    GET /ObjectName
    x-oss-range-behavior: standard
    Range: bytes=500-2000
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 07:02:23 GMT
    Authorization: Signature
    
    206 (Partial Content)
    content-length: 500
    content-range: bytes 500-999/1000
    etag: "CACF99600561A31D494569C979E6FB81"
    x-oss-request-id: 5DA9637FB3B1C73234CC59EB
    date: Fri, 18 Oct 2019 07:02:23 GMT
    [500 bytes of object data]

  • 增加x-oss-range-behavior:standard請求頭,首字節(jié)超出有效區(qū)間,返回416錯誤。

    GET /ObjectName
    x-oss-range-behavior: standard
    Range: bytes=1000-2000
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 07:04:23 GMT
    Authorization: Signature
    
    416 (Requested Range Not Satisfiable)
    content-length: 345
    x-oss-request-id: 5DA963F7CEBFAA3931BF91F5
    date: Fri, 18 Oct 2019 07:04:23 GMT
    content-type: application/xml
    <?xml version="1.0" encoding="UTF-8"?>
    <Error>
      <Code>InvalidRange</Code>
      <Message>The requested range cannot be satisfied</Message>
      <RequestId>5DA963F7CEBFAA3931BF91F5</RequestId>
      <HostId>bucket.oss-cn-hangzhou.aliyuncs.com</HostId>
      <ActualObjectSize>1000</ActualObjectSize>
      <RangeRequested>bytes=1000-2000</RangeRequested>
    </Error>

  • 增加x-oss-range-behavior:standard請求頭,指定范圍超出有效區(qū)間,返回0~999字節(jié),即完整的文件內(nèi)容。

    GET /ObjectName
    x-oss-range-behavior: standard
    Range: bytes=-2000
    Host: bucket.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 18 Oct 2019 07:06:39 GMT
    Authorization: Signature
    
    206 (Partial Content)
    content-length: 1000
    content-range: bytes 0-999/1000
    etag: "CACF99600561A31D494569C979E6FB81"
    x-oss-request-id: 5DA9647FC4334F3534AF9A83
    date: Fri, 18 Oct 2019 07:06:39 GMT
    [1000 bytes of object data]

適用于

  • 對象存儲 OSS