HTTP 斷點續傳

2021-07-10 18:07:51 字數 1149 閱讀 6163

range

用於請求頭中,指定第乙個位元組的位置和最後乙個位元組的位置,一般格式:

range:(unit=first byte pos)-[last byte pos] 

content-range

用於響應頭,指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在伺服器向客戶返回乙個部分響應,它必須描述響應覆蓋的範圍和整個實體長度。一般格式: 

一般正常回應

content-range: bytes 0-800/801 //801:檔案總大小

if-range頭部需配合range,如果沒有range引數,則if-range會被視為無效。

如 果if-range匹配上,那麼客戶端已經存在的部分是有效的,伺服器將返回缺失部分,也就是range裡指定的,然後返回206(partial content),否則證明客戶端的部分已無效(可能已經更改),那麼伺服器將整個實體內容全部返回給客戶端,同時返回200ok

1. 如果不滿足if-none-match,也就是任何乙個etag匹配了,那伺服器就不會產生該請求的響應(412返回)。除非判斷其它條件如if- modified-since不成立(也就是since的時間後內容沒有更改),那server根據不同的請求方式發出不同的響應頭,如果是get或 head請求,這種情況就要響應304 not modified,順便帶上cache相關的頭資訊,特別是匹配上的etag; 如果是其它請求方式,那就響應412precondition failed了

2.如果if-none-match成立,也就是乙個etag也沒匹配,那伺服器會忽略任何其它諸如if-modified-since的條件,就不能再產生304的響應頭了

HTTP 斷點續傳

客戶端請求域 range 格式如下例子 第乙個500位元組 位元組偏移量0 499,包括0和499 range bytes 0 499 第二個500位元組 位元組偏移量500 999,包括500和999 range bytes 500 999 最後500位元組 位元組偏移量9500 9999,包括9...

Http 斷點續傳

http斷點續傳要點 伺服器端返回頭必需包含資訊頭資訊 客戶端首次請求 accept ranges bytes 要求續傳時請求端頭資訊必須包含頭資訊 第二次請求 range bytes 100000 服務端返回狀態碼206,請求頭資訊必須包含資訊 accept ranges bytes conten...

http斷點續傳

某些檔案修改非常頻繁,例如 在秒以下的時間內進行修改 1s 內修改了 n 次 if modified since 能檢查到的粒度是 s 級的,這種修改無法判斷 或者說 unix 記錄 mtime 只能精確到秒 某些伺服器不能精確的得到檔案的最後修改時間。伺服器處理請求,返回檔案內容以及相應的 hea...