根据RFC 2616,HTTP服务器生成实体标签是可选的.但是,如果收到(或)标头,我找不到条件兼容的HTTP服务器应该做什么.它应该忽略这些标题还是应该响应? If-MatchIf-None-Match412 Precondition Failed
UPD:只是为了澄清,我假设有问题的服务器不支持实体标签.
有一个方便的HTTP响应状态代码活动图,您可以使用它来回答这个问题.
如果您不支持ETag并且请求包含If-Match值以外的其他值*,则您将使用412进行响应.而If-None-Match*可以完全忽略其他值.
与If-None-Match标头(无知仅损害性能)相比,如果服务器无法匹配所请求的实体,则IF-MATCH请求几乎肯定会失败并返回HTTP/412.可能最常见的使用IF-MATCH标头是当客户端正在执行Range请求时,除非服务器可以确认资源未被修改,否则它不应返回请求的范围,因为结果可能是数据损坏客户.
现在,如果服务器知道它不是Range请求或者知道客户端实体实际上必须匹配(例如因为服务器永远不允许更新其实体),那么就好像标题不存在一样可能有意义有限的情况.
虽然 RFC2616 在这个问题上是隐含的,但您可以从 14.26(If-None-Match)中推断出,如果服务器无法将资源与标签相匹配,那么它应该继续请求)。根据我对 RFC2616 的理解,412 代码适用于修改状态的请求(例如 PUT、POST、DELETE)。因此,本质上,如果标签不匹配(并且当服务器端不存在该标签时,这只是许多可能的情况之一),那么服务器应该继续处理该请求。
| 归档时间: |
|
| 查看次数: |
11270 次 |
| 最近记录: |