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

Mar*_*cel 1 http http-status-codes

如果您GET对资源进行了请求,那么您可以获得Not Modified响应以避免不必要的流量.

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

2xx原本预计它会在范围内,因为它是一个有效答案的成功请求.

请参阅RFC.

cas*_*lin 5

请不要再使用旧的和久已过时的RFC 2616作为参考.它完全被RFC 7230-35淘汰,它们共同定义了HTTP协议.


RFC 7231中所述,有几种类型的重定向,其中一种是对缓存资源的隐式重定向,如304状态代码所示(突出显示为我的):

6.4.重定向3xx

3xx(重定向)类的状态代码表示进一步的动作,才能完成请求将要采取的用户代理.[...]

有几种类型的重定向:

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

  2. 重定向,提供匹配资源的选择,每个都能够表示原始请求目标,如 300(多个选择)状态代码中所示.

  3. 重定向到由Location 字段标识的不同资源,该资源可以表示对请求的间接响应,如303(请参阅其他)状态代码中所示.

  4. 重定向到先前缓存的结果,如304(未修改)状态代码中所示.

请参阅下面304RFC 7232中如何定义状态代码:

4.1.304未修改

304(未修改)状态代码表示条件GETHEAD要求已收到,并会导致在一个200 (OK)响应,如果不是为事实的条件评价为假.换句话说,服务器不需要传送目标资源的表示,因为请求指示使请求有条件的客户端已经具有有效表示; 因此,服务器重定向客户端以使用该存储的表示,就好像它是200(OK)响应的有效负载一样.