2009-08-21 127 views
3

我正在嘗試爲我們的服務之一構建HEAD方法,以便客戶在決定是否下載它之前,可以查看內容類型和大小。HTTP HEAD響應 - 設置內容長度

如何設置響應頭的內容長度?使用HttpContext公開ContentType,Encoding等,但我無法指定長度,因爲我認爲當某些內容添加到響應時,框架通常會添加此值。

是否有另一種方法做到這一點,或者我不正確地設置HEAD請求的長度 - 我是否應該添加自定義標題以返回資源的大小?

回答

2

我認爲一個Content-Length指定響應正文的大小 - 而不是資源的大小。因此,在HEAD響應的上下文中沒有意義。

編輯:的規格說:

HEAD方法是相同,除了在應答服務器不能返回一個消息體得到的。響應HEAD請求的HTTP頭中包含的元信息應該與響應GET請求發送的信息相同。此方法可用於獲取有關請求隱含的實體的元信息,而無需傳遞實體主體本身。此方法通常用於測試超文本鏈接的有效性,可訪問性和最近的修改。

對HEAD請求的響應可能是可緩存的,因爲響應中包含的信息可能用於從該資源更新先前緩存的實體。如果新字段值指示緩存實體與當前實體不同(如將通過Content-Length,Content-MD5,ETag或Last-Modified中的更改所指示的那樣),則緩存必須將緩存條目視爲陳舊。

- http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4

這表明我上面的說法是錯誤的。特別是後面的段落強烈暗示HEAD可以具有頭部。

+0

謝謝 - 閱讀它的頭是相同的,所以我期望長度被設置爲將返回一個GET的大小。在大多數情況下,您會檢查標題以確定資源是否已更改。在我們的情況下,我們希望給予人們選擇是否根據大小進行下載。 – 2009-08-21 13:29:17

+1

我相信這是正確的解釋。這不是一個保證所有演員都會以這種方式實際執行它...... – troelskn 2009-08-21 16:30:01

相關問題