Http Redirect Status Code
状态码 | 名称 | 是否永久 | 保留原请求方法 | 常用场景 |
---|---|---|---|---|
301 | Moved Permanently | ✅ 是 | ❌ 否 | 网站搬家、改 URL |
302 | Found | ❌ 否 | ❌ 否 | 临时跳转(老用法) |
303 | See Other | ❌ 否 | ❌ 否(改成 GET) | 表单提交后跳转 |
307 | Temporary Redirect | ❌ 否 | ✅ 是 | 保留请求方法的临时跳转 |
308 | Permanent Redirect | ✅ 是 | ✅ 是 | 保留请求方法的永久跳转 |
保留请求方法
如果是 307 或 308(保留方法),客户端会继续用 POST 方法 访问新的地址
如果是 302 或 301(默认不保留),浏览器可能会用 GET 方法 去请求新的地址,丢弃原来的 POST:这在表单提交、支付、上传等操作中可能会出问题,因为原本 POST 带的数据就没了。
如果你在做 API 或表单处理,遇到 POST 请求被重定向,强烈建议用 307 或 308 来避免请求被“变成 GET”,导致数据丢失。
状态码 | 会保留原请求方法吗? | 说明 |
---|---|---|
301 | ❌ 不一定(由浏览器决定) | 原 POST 可能变成 GET |
302 | ❌ 不一定(不可靠) | 原 POST 可能变成 GET |
303 | ❌ 不保留(强制变成 GET) | 专门用于表单跳转 |
307 | ✅ 保留 | 原方法(如 POST)不变 |
308 | ✅ 保留 | 原方法(如 POST)不变 |