ETag是否以304响应返回?

Mar*_*coS 6 http http-status-codes http-status-code-304

我正在构建一个node.js应用程序 - 每天一次 - 从一些外部Web服务器(使用" 请求 "包)获取数据.

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

然后,当再次(第二天)获取该资源时,我If-None-Match在请求中添加了带有已保存的etag 的标头.

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

Opa*_*pal 8

请查看相应的RFC 2616.

响应必须包括以下标题字段:( ...)

  • ETag和/或Content-Location,如果标题是在对同一请求的200响应中发送的

因此,如果ETag返回包含200 OK状态代码的标头,则它也必须包含在内304 Not Modified response.