Skip to main content

Http Redirect Status Code

状态码名称是否永久保留原请求方法常用场景
301Moved Permanently✅ 是❌ 否网站搬家、改 URL
302Found❌ 否❌ 否临时跳转(老用法)
303See Other❌ 否❌ 否(改成 GET)表单提交后跳转
307Temporary Redirect❌ 否✅ 是保留请求方法的临时跳转
308Permanent 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)不变