📜  状态码 304 (1)

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

HTTP状态码 304

HTTP状态码是指在使用 HTTP 协议时服务器返回的状态码,表示当前的请求已被服务器接受并处理。状态码 304 表示请求的资源并没有被修改,客户端可以直接使用缓存的数据,从而避免重复请求。

响应格式

当服务器返回状态码 304 时,响应头部中必须包含以下内容:

HTTP/1.1 304 Not Modified
Date: Tue, 26 Oct 2021 10:00:00 GMT

如果是使用缓存数据的情况下,还需要在响应头部添加以下内容:

Cache-Control: max-age=3600
ETag: "abc123"

其中,Cache-Control 表示缓存过期时间,以秒为单位;ETag 表示资源的唯一标识符。

使用场景

状态码 304 主要用于缓存操作,通常在以下两个情况下会被使用:

  1. 当客户端请求某个资源时,服务器会返回该资源的 ETag 值。当客户端再次请求该资源时,会将该 ETag 值作为 If-None-Match 的请求头部发送给服务器。如果服务器判断该资源未被修改,则返回 304 状态码,提示客户端可使用缓存数据。

  2. 当客户端请求某个资源时,服务器会返回该资源的最后修改时间。客户端再次请求该资源时,会将该最后修改时间作为 If-Modified-Since 的请求头部发送给服务器。如果服务器判断该资源未被修改,则返回 304 状态码,提示客户端可使用缓存数据。

总结

状态码 304 在 HTTP 协议中的作用是告知客户端可以直接使用缓存数据,从而避免重复的请求。在缓存操作中,需要使用 ETag 或最后修改时间作为标识符,客户端再次请求该资源时,则会将该标识符与服务器端的资源进行比对。如果服务器端判断资源未被修改,则会返回 304 状态码,否则会返回资源的数据,状态码为 200。