gpt4 book ai didi

HTTP If-None-Match 与 If-Match

转载 作者:可可西里 更新时间:2023-11-01 15:05:14 24 4
gpt4 key购买 nike

我目前正在构建一个 PHP 脚本,它将在需要时响应 HTTP“304 Not Modified”。

(请参阅 question #2086712 了解我目前所做的事情)。

目前我回答以下问题:

  • If-Modified-Since
  • 如果不匹配

但我发现还有 3 个 header 可以触发“条件 GET”(参见 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3):

  • 如果匹配
  • If-Unmodified-Since
  • 如果范围

最后两个似乎与我的缓存系统无关(它们似乎在恢复“大”下载时使用)但我还没有发现“If-Match”是否可以在我的系统中使用。

“If-Match”是否在代理或 Web 浏览器中用于“常规”页面内容? “If-Match”与“If-None-Match”有何不同?

我应该支持这 3 个还是其中的一部分?欢迎任何帮助!

最佳答案

如果匹配

服务器必须返回 412(前提条件失败)响应,如果:

  • 没有一个实体标签匹配,
  • 或给出“*”且当前实体不存在

If-Match 应该被忽略,如果:

  • 任何实体标签匹配
  • 或者如果请求导致 2xx 或 412 状态以外的任何结果(没有 If-Match)
  • 或者如果给出“*”并且资源存在任何当前实体

关于if-match的结论:

  • “If-Match: *”的含义是,如果源服务器选择的表示...存在,则应执行该方法,如果表示不存在,则不得执行。

If-Match in RFC2616

If-Unmodified-Since

服务器必须返回 412(前提条件失败)响应,如果:

  • 自指定时间以来已修改请求的变体

If-Unmodified-Since 应该被忽略,如果

  • 请求的资源自该字段指定的时间以来未被修改
  • 或者正常情况下的请求(即没有 If-Unmodified-Since header )将导致 2xx 或 412 状态以外的任何结果
  • 或指定日期无效

If-Unmodified-Since in RFC2616

If-范围

Informally, its meaning is 'if the entity is unchanged, send me the part(s) that I am missing; otherwise, send me the entire new entity'

先决条件:

  • If-Range header 应该仅与Range header 一起使用,并且必须被忽略如果请求不包含 Range header ,或者如果服务器不支持 子范围操作。

服务器应该提供 206(部分内容)响应,如果 If-Range header 匹配实体的当前实体标签。否则,服务器应该使用 200(OK)响应返回整个实体。

If-Range in RFC2616

未定义的结果

具有以下 header 组合会导致未定义的结果:

  • If-Modified-Since and If-Match
  • If-Modified-Since If-Unmodified-Since
  • If-None-Match If-Match
  • If-None-Match If-Unmodified-Since

这些规则已从以下规则中分解出来(可以在 RFC2616 中找到):

  • If-Match and(If-None-Match or If-Modified-Since)
  • If-Modified-Since and(If-Match or If-Unmodified-Since)
  • If-None-Match and ( If-Match or If-Unmodified-Since )
  • If-Unmodified-Since and(If-None-Match or If-Modified-Since)

关于HTTP If-None-Match 与 If-Match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com