3×× 重定向
304 Not Modified 未修改
这用于缓存目的。它告诉客户端响应没有被修改,因此客户端可以继续使用相同的缓存版本的响应
已收到条件 GET 或 HEAD 请求,如果不是条件评估为 false,则会导致200 OK 响应.
换句话说,服务器不需要传输目标资源的表示,因为请求表明使请求有条件的客户端已经具有有效的表示;因此,服务器正在重定向客户端以使用该存储的表示,就好像它是200 OK响应的有效负载一样.
生成 304 响应的服务器必须生成以下任何头字段,这些字段将在对同一请求的200 OK响应中发送:Cache-Control、Content-Location、Date、ETag、Expires 和 Vary。
由于 304 响应的目标是在接收者已经有一个或多个缓存表示时最小化信息传输,发送者不应该生成除上面列出的字段之外的表示元数据,除非存在用于指导缓存更新的元数据(例如,如果响应没有 ETag 字段,Last-Modified 可能很有用).
接收 304 响应的缓存的要求在Section 4.3.4 of RFC7234中定义。如果条件请求源自出站客户端,例如具有自己缓存的用户代理向共享代理发送条件 GET,则代理应该将 304 响应转发给该客户端.
304 响应不能包含消息体;它总是由标题字段之后的第一个空行终止.
- Source: RFC7232 Section 4.1
304 代码参考
Rails HTTP Status Symbol :not_modified
Go HTTP Status Constant http.StatusNotModified
Symfony HTTP Status Constant Response::HTTP_NOT_MODIFIED
Python2 HTTP Status Constant httplib.NOT_MODIFIED
Python3+ HTTP Status Constant http.client.NOT_MODIFIED
Python3.5+ HTTP Status Constant http.HTTPStatus.NOT_MODIFIED