Security

在代理伺服器上下載之前獲取文件大小

  • March 11, 2016

我們正在用 C 語言建構一個多執行緒代理文件伺服器,我們在其中接收請求並使用 libcurl 庫從另一個位置檢索它。

該庫為您提供了發出 HEAD 請求以獲取一些文件參數(例如大小等)的選項。

您還可以在實際開始提供文件時獲取這些參數。

一位同事指出,執行 HEAD 請求然後立即獲取文件是一種浪費。我同意他的觀點,但我想知道是否存在提前知道文件大小可能有用的案例?

  • 例如選擇最佳 MTU。
  • 例如,如果它是一個大文件,則設置執行緒優先級。
  • 例如,當我們有一個大文件時,如果我們使用太多記憶體,減少整體執行緒。

除此之外,當我們在代理文件伺服器場景中檢索文件大小之前查詢文件大小時是否存在安全問題?

RFC已經說明了一切:

9.4 頭部

除了伺服器不能在響應中返回消息體之外,該HEAD方法是相同的。GET響應請求的 HTTP 標頭中包含的元資訊HEAD應該與響應GET請求發送的資訊相同。此方法可用於獲取有關請求所隱含的實體的元資訊,而無需傳輸實體主體本身。

這種方法通常用於測試超文本連結的有效性、可訪問性和最近的修改。

我希望代理主要使用HEAD請求來確定已經記憶體的對像是否仍然有效並且可以返回而不是啟動新的下載。

引用自:https://serverfault.com/questions/763077