2016-01-21 104 views
2

我正在構建一個node.js應用程序 - 一天一次 - 從外部Web服務器獲取數據(使用「request」包)。ETag是否在304響應中返回?

我想避免兩次讀取相同的數據,因此我在第一次下載時(200狀態碼)跟蹤每個資源ETag。

然後,當再次獲取(第二天)該資源時,我會在請求中添加一個If-None-Match標題和保存的etag。

因爲我懷疑從即使資源內容不被修改的遠程Web服務器的某個時候收到200狀態代碼(而不是預期304),我問我是否應該期待的資源ETag在一個304響應返回(以及如何獲取它在request響應中...),以嘗試調試此問題。

回答

3

請查看相應的RFC 2616

的響應必須包含以下的報頭字段:(...)

  • ETag的和/或內容 - 位置,如果頭會被在一個200響應於相同的請求發送

所以,如果ETag頭與200 OK狀態返回代碼,還必須包含在304 Not Modified response

+0

新的RFC如何?它是否在他們中被提及? – nhooyr

+0

在https://tools.ietf.org/html/rfc7232#section-4.1找到它 生成304響應的服務器必須生成任何 下面的頭字段,這些頭字段將以200(OK) 響應相同的請求:緩存控制,內容位置,日期, ETag,Expires和Vary.' – nhooyr