2015-10-28 17 views
1

所以基本上我想了解ETag令牌值在請求的If-None-Match頭中的工作情況。Etag令牌如何在HTTP中的條件GET中工作?

我已經瞭解了的工作原因 - 修改 - 自有條件的GET方法。 有人可以簡單地解釋條件GET如何工作在Etag的情況下與If-None-Match條件?

感謝提前:)

回答

1

對於做條件請求您使用If-None-Match通過使用最新的的Etag或If-Modified-Since

Etag是一個表示實體狀態的值。通常,它是一個base64編碼的散列。在請求資源時,服務器可能會在響應中附加一個Etag HTTP標頭,這樣Etag會代表資源的狀態。然後,客戶端可以在下一個請求中在If-None-Match頭部中發送Etag或Etags集合,以便服務器將檢查請求資源的狀態是否已更改,如果是,它將返回具有新資源表示的HTTP 200,否則將返回HTTP 200指示資源沒有改變的HTTP 304。

Etag被認爲是一個強有力的驗證器,所以If-None-Match將優先於If-Modified-Since

更多信息:

+0

並不代表實體的狀態。它代表了內容。儘管最準確的表示方式是內容散列,但在運行時計算起來相當昂貴,因此大多數服務器使用其他方法; apache/lighttpd使用一個或多個文件inode,mtime和size,nginx只修改上次修改的時間和大小。這增加了集羣的複雜性。無論條件請求是否爲大多數流量添加任何值都是有爭議的,它肯定無助於實施有效的緩存策略來定期更改內容(除非是非常大的文件) – symcbean