本文介紹OSS返回416錯誤的原因和解決方案。

InvalidRange

The requested range cannot be satisfied

  • 問題原因:通過HTTP Range請求獲取大文件的部分內(nèi)容時,選取了無效的范圍。
  • 解決方案:OSS不支持多Range參數(shù),即不支持指定多個范圍。ByteRange指請求資源的范圍,單位為Byte(字節(jié)),ByteRange有效區(qū)間在0object size - 1的范圍內(nèi)。假設文件的總大小為2000字節(jié),指定不同的ByteRange,其下載行為說明如下:
    • Range: bytes=0-499:從文件開始部分到指定字節(jié)的內(nèi)容,即下載1~500字節(jié)的內(nèi)容。
    • Range: bytes=-500:最后500字節(jié)的內(nèi)容,即下載1501~2000字節(jié)的內(nèi)容。
    • Range: bytes=500-:從第500字節(jié)開始到文件結(jié)束部分的內(nèi)容,即下載501~2000字節(jié)的內(nèi)容。
    • Range: bytes=0-:從第一個字節(jié)開始到最后一個字節(jié)的內(nèi)容,即下載完整的文件1~2000字節(jié)的內(nèi)容。