为什么“未修改”是重定向(“ 3xx”)状态代码?

时间:2018-08-09 09:55:00

标签: http http-status-codes

如果您对资源进行GET请求,那么获取 Not Modified 响应以避免不必要的流量就非常有意义。

问题是为什么返回码是304?这意味着它是一个重定向响应。在这种情况下,预期的重定向位置是什么?

我希望它在2xx范围内,因为它是成功请求,且答案有效。

请参见RFC

2 个答案:

答案 0 :(得分:5)

请不要再使用旧的和过时的RFC 2616作为参考。它完全被一起定义HTTP协议的RFC 7230-35所取代。


RFC 7231所述,重定向有几种类型,其中一种是隐式重定向到缓存的资源,如状态304所示(重点是我的):

  

6.4. Redirection 3xx

     

状态代码的3xx(重定向)类指示     用户代理需要采取行动才能完成     请求。 [...]

     

有几种重定向类型:

     
      
  1. 重定向,指示资源可能在以下位置可用     由Location字段提供的不同URI,如     状态代码301(已永久移动),302(已找到)和307     (临时重定向)。

  2.   
  3. 重定向,提供各种匹配资源的选择     能够代表原始请求目标,如     300(多项选择)状态代码。

  4.   
  5. 重定向到由Location标识的其他资源     字段,它可以表示对请求的间接响应,例如     在303(请参阅其他)状态代码中。

  6.   
  7. 重定向到先前缓存的结果,如304(不是     已修改)状态代码。

  8.   

请参见下文,如何在304中定义RFC 7232状态代码:

  

4.1. 304 Not Modified

     

状态304(未修改)表示有条件的GET   或HEAD的请求已收到,可能会导致200   (OK)如果不是因为条件   评估为假。换句话说,不需要服务器   转移目标资源的表示形式,因为   request指示发出请求的客户端   有条件的,已经具有有效的表示形式;服务器是   因此,重定向客户端以使用存储的客户端   表示为200(确定)响应的有效载荷。

答案 1 :(得分:1)

它正在重定向到缓存中存储的数据的副本。