什么是304状态码?

已收到有条件的GET或HEAD请求,并将导致200 OK响应如果不是因为条件被计算为假。

换句话说,服务器不需要传输目标资源的表示,因为请求表明使请求有条件的客户端已经有了有效的表示;因此,服务器将重定向客户端以使用存储的表示,就好像它是对象的有效负载一样200好了响应。

生成304响应的服务器必须生成下列报头字段中的任何一个200好了对相同请求的响应:Cache-Control, Content-Location, Date, ETag, Expires和Vary。

由于304响应的目标是在接收方已经有一个或多个缓存表示时最小化信息传输,因此发送方不应该生成除上述列出的字段之外的表示元数据,除非这些元数据是为了指导缓存更新而存在的(例如,如果响应没有ETag字段,Last-Modified可能有用)。

中定义了接收304响应的缓存的要求RFC7234的4.3.4节.如果条件请求来自出站客户端,例如用户代理使用自己的缓存向共享代理发送条件GET,则代理应该将304响应转发给该客户端。

304响应不能包含消息体;它总是以头字段之后的第一个空行结束。


304代码参考

Rails HTTP状态符号: not_modified

HTTP状态常数http。StatusNotModified

Symfony HTTP状态常量响应:HTTP_NOT_MODIFIED

Python2 HTTP状态常量httplib。NOT_MODIFIED

Python3+ HTTP状态常量http.client.NOT_MODIFIED

Python3.5+ HTTP状态常量http.HTTPStatus.NOT_MODIFIED

额外的资源


返回HTTP状态码列表

最重要的