根据 RFC 2616 , HTTP 服务器生成实体标签是可选的。但是,我找不到有条件地兼容的 HTTP 服务器在接收到 If-Match
(或 If-None-Match
)时应该做什么) 标题。它应该忽略这些 header 还是应该响应 412 Precondition Failed
?
UPD:澄清一下,我假设有问题的服务器不支持实体标签。
最佳答案
与 If-None-Match header (忽略它只会损害性能)相反,如果服务器无法匹配请求的实体,IF-MATCH 请求几乎肯定会失败并返回 HTTP/412。 IF-MATCH header 最常见的用途可能是客户端正在执行范围请求时,除非服务器可以确认资源未被修改,否则不应返回请求的范围,因为结果可能是数据损坏客户。
现在,如果服务器知道它不是 Range 请求或者知道客户端实体实际上必须匹配(例如,因为服务器从不允许更新其实体),那么就好像 header 不存在一样在这种有限的情况下有意义。
关于http - 使用 If-Match header 的正确行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080718/