ETag 是否在 304 响应中返回?

Is ETag returned in a 304 response?

我正在构建一个 node.js 应用程序,该应用程序 - 每天一次 - 从一些外部网络服务器获取数据(使用“request”包)。

我想避免两次获取相同的数据,所以我在第一次下载时跟踪每个资源的 ETag(200 状态代码)。

然后,当再次(第二天)获取该资源时,我在请求中添加了一个 If-None-Match header 和保存的 etag。

因为我怀疑有时会从远程 Web 服务器收到 200 状态代码(而不是预期的 304),即使资源内容没有被修改,我问我是否应该期待资源 ETag 将在 304 响应中返回(以及如何在 request 响应中获取它...),以尝试调试此问题。

请看合适的RFC 2616

The response MUST include the following header fields: (...)

  • ETag and/or Content-Location, if the header would have been sent in a 200 response to the same request

因此,如果 ETag header 返回 200 OK 状态代码,它也必须包含在 304 Not Modified 响应中。