📜  HTTP 标头 | If-Unmodified-Since(1)

📅  最后修改于: 2023-12-03 15:15:45.034000             🧑  作者: Mango

HTTP 标头 | If-Unmodified-Since

HTTP 标头 If-Unmodified-Since 可以用于在进行 PUT 或者 DELETE 操作时检查资源是否被修改过。它告诉服务器只有在资源自检请求时间以来未被修改才进行操作。

格式

如果要在请求中添加 If-Unmodified-Since 标头,格式如下:

If-Unmodified-Since: <rfc1123-date>

其中 <rfc1123-date> 是上次修改时间或者其他已知时间,它使用以下格式:

ddd, dd mmm yyyy hh:mm:ss GMT

例如:

If-Unmodified-Since: Sat, 29 May 2021 16:06:13 GMT
示例

假设我们有一个名为 /users/1 的资源表示一个用户:

{
  "id": 1,
  "name": "John Doe",
  "email": "johndoe@example.com",
  "createdAt": "2021-05-29T16:00:00Z",
  "updatedAt": "2021-05-29T16:05:00Z"
}

现在我们想要更新这个用户的邮箱,因此我们向服务器发出一个 PUT 请求:

PUT /users/1 HTTP/1.1
Host: example.com
Content-Type: application/json
If-Unmodified-Since: Sat, 29 May 2021 16:05:00 GMT

{
  "email": "newemail@example.com"
}

如果这个资源在 If-Unmodified-Since 指定的时间之后被修改了,服务器将返回一个 412 Precondition Failed 状态码。如果资源没有被修改,服务器将更新资源并返回一个 200 OK 状态码。

注意事项
  • If-Unmodified-Since 标头只对单个资源操作有效。
  • 时间戳必须是上次修改的时间,而不是请求的时间戳。
  • 时间戳需要使用 GMT 格式。
  • 如果资源是刚刚创建的,则时间戳应该是它的创建时间。