Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:HTTP Range İsteklerini Bölümleyerek OSS Kaynaklarını Elde Etme

Son Güncelleme:Oct 10, 2026

Not

Sorumluluk Reddi: Bu konu, üçüncü taraf ürünlerle ilgili bilgiler içerebilir. Bilgiler yalnızca referans amaçlıdır. Alibaba Cloud, üçüncü taraf ürünlerin performansı ve güvenilirliği ile bu ürünlerdeki işlemlerin potansiyel etkileri konusunda herhangi bir garanti vermez.

Genel Bakış

Bu konu, HTTP Range isteklerini bölümleyerek OSS kaynaklarının nasıl elde edileceğini açıklar.

Mesaj

OSS üzerinden büyük bir nesne (100 MB'tan büyük) yüklerken veya indirirken, aktarım sırasında ağ ortamından etkilenilirse aktarım başarısız olur. Yükleme işlemi sırasında çok parçalı yükleme yapmak için MultipartUpload işlemini çağırabilirsiniz. Bir kaynağı indirirken büyük bir dosyanın belirli bir kısmını almak için HTTP Range isteği kullanabilirsiniz. Örnek:

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]
Not

Not :[$ByteRange], istenen kaynak aralığını belirtir. Birim: bayt. Örnek:

  • Range: bytes=0-499 ilk 500 baytı belirtir.

  • Range: bytes=500-999 ikinci 500 baytı belirtir.

  • Range: bytes=-500 son 500 baytı belirtir.

  • Range: bytes=500- 500. bayttan nesnenin sonuna kadar olan verileri belirtir.

  • Range: bytes=0- ilk bayttan son bayta kadar olan tüm dosya içeriğini ifade eder.

  • Bir GetObject isteğinde yalnızca tek bir aralık belirtebilirsiniz. Birden fazla aralık belirtirseniz OSS yalnızca ilk aralıktaki verileri döndürür. Örneğin, Range:bytes=0-499.500-999 belirtildiğinde OSS yalnızca 0-499 bayt aralığındaki verileri döndürür.

  • [$ByteRange] geçerli aralığı 0 ile content-length - 1 arasındadır.

HTTP Range isteği geçerliyse yanıt 206 döndürür ve yanıt başlığında Content-Range içerir. HTTP Range isteği geçersizse veya belirtilen aralık geçerli aralık dışında kalıyorsa aralık dikkate alınmaz. Yanıt 200 değeri döndürür ve nesnenin tamamı iletilir. Aşağıdaki örnekte geçersiz HTTP Range isteği ve hata açıklaması gösterilmektedir.

Not

Not: Bir nesnenin kaynak boyutunun 1000 bayt ve aralık sınırlarının 0-999 olduğunu varsayalım. Belirtilen Range değerinin aralık dışına çıkmasını önlemek için Range okunmadan önce nesne boyutunu almak amacıyla bir HeadObject isteği yapabilirsiniz.

  • Range: byte=0-499: Format geçersizdir. byte değeri bytes olmalıdır.

  • Range: bytes=0-1000: Son baytın 1000 değeri geçerli aralığı aşmaktadır.

  • Range: bytes=1000-2000: Belirtilen aralık geçerli aralığı aşmaktadır.

  • Range: bytes=1000-: İlk bayt geçerli aralığı aşmaktadır.

  • Range: bytes=-2000: Belirtilen aralık geçerli aralığı aşmaktadır.

Range parametresinin geçerliliğini test etmek için aşağıdaki komutu çalıştırın:

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

Uyumlu davranış

HTTP Range kullanılırken, belirtilen aralık geçerli aralık dışında kaldığında OSS'nin davranışını değiştirmek için x-oss-range-behavior:standard istek başlığı eklenir. Davranış değişikliklerine ilişkin örnekler aşağıda verilmiştir:

Not

Not: Nesnenin kaynak boyutunun 1000 bayt ve aralık sınırlarının 0-999 olduğunu varsayalım. Örneğin, büyük bir dosyanın belirli bir kısmını almak için HTTP Range isteği kullandığınızda geçersiz bir aralık seçildiğinden OSS InvalidRange hata kodu döndürür. Daha fazla bilgi için bkz. OSS 416 hatası döndürüyor . Detaylı hata bilgileri aşağıdaki gibidir:

İstenen aralık karşılanamıyor

  • Range: bytes=500-2000: Son bayt geçerli aralığı aşarsa 500-999 bayt döndürülür.

  • Range: bytes=1000-2000: İlk bayt geçerli aralığı aşarsa 416 (InvalidRange) hatası döndürülür.

  • Range: bytes=1000-: İlk bayt geçerli aralığı aşarsa 416 (InvalidRange) hatası döndürülür.

  • Range: bytes=-2000: Belirtilen aralık geçerli aralığı aşarsa 0-999 bayt, yani dosyanın tamamı döndürülür.

Örnekler

Bu konuda aşağıdaki örnek HTTP Range isteği sağlanmıştır.

Not

Not: Nesnenin kaynak boyutunun 1000 bayt ve aralık sınırlarının 0-999 olduğunu varsayalım.

Normal istekler

  • İstenen Object kaynağının 0-499 bayt aralığındaki içeriğ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]
  • İstenen Object kaynağının 500. baytından dosya sonuna kadar olan içeriğ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]
  • İstenen Object kaynağının son 500 baytının içeriğ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]

Aralık dışı istek örneği

  • Son baytın 1000 değeri geçerli aralığı aşarsa Range dikkate alınmaz. Yanıt 200 değeri döndürür ve nesnenin tamamını iletir.

    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]
  • Belirtilen aralık geçerli aralığı aşarsa Range dikkate alınmaz. Yanıt 200 değeri döndürür ve nesnenin tamamını iletir.

    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]

Uyumlu davranış istek örneği

  • x-oss-range-behavior:standard istek başlığını ekleyin. Son bayt geçerli aralığı aştığında 500-999 bayt aralığındaki içerik döndürülür.

    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 istek başlığını ekleyin. İlk bayt geçerli aralığı aşarsa 416 hatası döndürülür.

    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 istek başlığını ekleyin. Belirtilen aralık geçerli aralığı aşarsa 0-999 bayt, yani dosyanın tamamı döndürülür.

    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]

Uygulama kapsamı

  • OSS