我目前正在尝试了解 304/未修改究竟如何符合 3xx 范围类的 HTTP 状态代码。RFC 1945,秒。9.3和RFC 2616,秒。10.3都写着:
此类状态码表明用户代理需要采取进一步的行动才能满足请求。
虽然“从客户端的本地缓存加载”显然是“进一步的操作”,但我很难理解这是 HTTP 意义上的重定向。我是不是太从字面上看这个了?
我目前正在尝试了解 304/未修改究竟如何符合 3xx 范围类的 HTTP 状态代码。RFC 1945,秒。9.3和RFC 2616,秒。10.3都写着:
此类状态码表明用户代理需要采取进一步的行动才能满足请求。
虽然“从客户端的本地缓存加载”显然是“进一步的操作”,但我很难理解这是 HTTP 意义上的重定向。我是不是太从字面上看这个了?
请参阅http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-26.html#rfc.section.6.4.p.2:
有几种类型的重定向:
指示资源可能在不同 URI 上可用的重定向,由 Location 字段提供,如状态代码 301(永久移动)、302(找到)和 307(临时重定向)。
提供匹配资源选择的重定向,每个资源都能够表示原始请求目标,如 300(多项选择)状态代码。
重定向到由 Location 字段标识的不同资源,该资源可以表示对请求的间接响应,如 303(参见其他)状态代码。
重定向到以前缓存的结果,如 304(未修改)状态代码。
我想这是因为服务器正在“重定向”客户端以从其本地缓存加载请求的资源,而不是从服务器下载它。如果客户端没有本地缓存副本,那么它不应该首先发送条件请求。