2015-01-14 68 views
2

根據RFC7233If-Range HTTP標頭可以是實體標籤或HTTP日期。在這種情況下,RFC的3.2節指出ETag與If-Range HTTP標頭中的日期

有效實體標籤可以從有效的HTTP-日期由 來區分檢查用於DQUOTE前兩個字符。

我的問題:爲什麼我們需要兩個個字符?由於弱實體標籤在這裏是不允許的,所以我會認爲測試第一個字符是否是DQUOTE就足夠了。

回答

1

答案似乎是你不需要檢查兩個字符,只看第一個字符就足夠執行If-Range

如果你看看Apache HTTP Server的實現,你可以看到它只檢查第一個字符(http_protocol.c,在撰寫本文時爲第477行)。

if (if_range[0] == '"') { 

我覺得文字的有些誤導的措辭可以通過查看HTTP 1.1規範的早期版本(RFC2616),它說來解釋:

服務器可以有效的區分HTTP日期和任何形式的 實體標籤通過檢查不超過兩個字符。

以前的陳述沒有錯,但不能立即與If-Range相關,只有強ETags是允許的。

我期望RFC7233形式的文本是試圖使前面的文本更清晰,但不幸的是,在這種情況下,它沒有達到它所尋求的清晰度。