HTTP 重定向 · 方法语义实验

地址变了,原来的动作还会继续吗?

同样是跳到新地址,旧请求可能变成读取,也可能把请求体原样再发一次。先配置服务器的回应,再把它追加到路线,看看一次“跳转”究竟改变了什么。

当前路线的额外往返 0 次 RTT

配置这一跳

方法只在路线起点选择;每追加一跳,新的目标会成为下一次请求的基准地址。

原始请求方法 改变会清空路线
响应状态码 服务器怎样指路
相对引用会以当前请求 URL 为基准解析;跨站通常使用绝对地址。
服务器当前收到 GET https://shop.example.com/orders/create

客户端接下来会发什么

相对 Location
当前请求客户端 → 服务器
GET /orders/create
无请求体
LOCATION 解析结果 https://shop.example.com/orders/8472
后续方法 GET · 明确改为检索
请求体 没有请求体需要发送
默认缓存倾向 需显式新鲜度

303 把“执行动作”和“读取结果”拆开;后续请求使用 GET,原提交体不会再次发送。

五种状态码,一眼看清取舍

每跳一次,都要多等一次响应

加载案例可以直接观察三跳链与协议、主机之间的来回循环。

已发生重定向0 跳
额外网络往返+0 RTT
待发出的当前请求GET
还没有真正跳转。上方即时推演不会增加网络往返,加入路线后才会记录一跳。

缓存倾向展示的是没有额外 Cache-Control 时的常见 HTTP 语义;实际复用还受请求方法、响应头和客户端策略影响。