我正在构建一个 node.js 应用程序,它每天定期从某个外部 Web 服务器获取数据(使用“request”包)。
我想避免两次获取相同的数据,所以我在第一次下载时跟踪每个资源的 ETag(200
状态代码)。
然后,当再次(第二天)获取该资源时,我在请求中添加了一个带有保存的 etag 的 If-None-Match
header 。
因为我怀疑有时会从远程 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
响应中。
关于http - ETag 是否在 304 响应中返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34917907/