HTTP 转发 与 重定向

HTTP 转发(Forward)与重定向(Redirect)的核心区别

特性 转发(Forward) 重定向(Redirect)
发生位置 服务器内部 客户端(浏览器)
HTTP 状态码 无(或 200) 301、302、307、308 等
浏览器地址栏 不变 变更为新 URL
请求次数 1 次 至少 2 次(原始请求 + 重定向请求)
数据携带 可以共享原始请求的 Request/Response 数据 不能直接共享,需通过 URL 参数或 Session
效率 高(无额外往返) 低(多一次网络往返)

详细说明

1. 转发(Forward)

  • 定义:服务器内部将请求从一个资源转交给另一个资源(如 Servlet 到 JSP)。

  • 示例(Java):

    java 复制代码
    request.getRequestDispatcher("/target.jsp").forward(request, response);
  • 特点

    • 对客户端透明,浏览器不知道发生了转发。

    • 共享同一个 HTTP 请求和响应对象。

    • 只能转发到同一应用内的资源(不能跨域)。

2. 重定向(Redirect)

  • 定义:服务器返回一个特殊响应(状态码 3xx + Location 头),让客户端重新发起请求到新地址。

  • 示例(Java):

    java 复制代码
    response.sendRedirect("/new-location");
  • 常见状态码

    • 301 Moved Permanently:永久重定向(缓存)

    • 302 Found:临时重定向(默认)

    • 307 Temporary Redirect:保持原始请求方法

  • 特点

    • 浏览器地址栏更新。

    • 新的请求与原始请求完全独立(丢失原始请求的 Body、参数等,除非手动传递)。

    • 可以跨域、跨应用重定向。


使用场景

场景 推荐方式 原因
用户登录后跳转到主页 重定向 避免刷新页面时重复提交表单
后台 MVC 控制器转到 JSP 渲染 转发 效率高,数据共享方便
外部支付成功后回调跳转 重定向 需要跨域,且浏览器地址变化
处理 POST 请求后避免重复提交 重定向(Post/Redirect/Get 模式) 刷新页面不会重复 POST
内部权限检查后展示错误页面 转发 保留原始请求数据,便于展示错误信息

直观对比图

bash 复制代码
转发:
Client → Server (请求资源A)
            ↓
         资源A 内部转发给 资源B
            ↓
Client ← Server (返回资源B的内容)
地址栏:仍然是资源A的URL

重定向:
Client → Server (请求资源A)
            ↓
Server ← 返回 302 + Location: 资源B
            ↓
Client → Server (新请求 资源B)
            ↓
Client ← Server (返回资源B的内容)
地址栏:变为资源B的URL

总结

  • 转发:服务器内部跳转,客户端无感知,一次请求,高效。

  • 重定向:客户端再次请求,地址栏变化,两次请求,适用于跨域、避免重复提交等场景。

相关推荐
其实防守也摸鱼15 分钟前
渗透--损坏的对象级别鉴权漏洞(Broken Object Level Authorization, BOLA)
大数据·网络·数据库·学习·tcp/ip·安全·安全威胁分析
hehelm25 分钟前
IO 多路复用 — Reactor
linux·服务器·网络·数据库·c++
线束线缆组件品替网26 分钟前
Amphenol ICC RJE1Y22610C42401线束组件应用解析
网络·数码相机·智能手机·计算机外设·电脑·电视盒子
2401_873479401 小时前
金融合规新规下IP查询怎么做?用IP离线库实现数据不出域
网络协议·tcp/ip·金融·ip
IT小白杨1 小时前
多账号环境稳定性由什么决定:指纹、网络、存储如何共同决定账号安全
网络·安全·开源软件·业界资讯·指纹浏览器
刘某的Cloud2 小时前
手工配置nginx的systemd服务
linux·运维·网络·nginx·systemd
微硬创新3 小时前
汽车制造产线协同:耐达讯PROFINETDeviceNet网关在机器人通信中的应用
人工智能·物联网·网络协议·自动化·汽车·制造·信息与通信
米尔的可达鸭3 小时前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构
数智化管理手记3 小时前
智能财务能替代人工核算吗?智能财务核心功能包含哪些?
大数据·网络·数据库·数据挖掘·精益工程
白帽小阳3 小时前
我的AI辅助开发工具链2026版:从编码到部署的全栈智能实践
网络·人工智能·学习·安全·自动化