Spring Boot 请求转发和重定向
Spring Boot Java HTTP About 853 words区别
转发
- 由服务端完成;
 - 地址栏不发生变化,显示的转发前的地址(针对浏览器);
 - 只发生一次请求;
 - 请求中携带的参数不会丢失;
 
重定向
- 服务端告诉浏览器或客户端重定向的地址,由客户端再次发起请求;
 - 地址栏显示重新向后的地址(针对浏览器);
 - 发生了两次请求;
 - 第一次请求的参数不会带到重定向后的请求中;
 
请求链路
转发
- 浏览器 请求 服务器
 - 服务器 转发 服务器2
 - 服务器2 响应 浏览器
 
重定向
- 浏览器 请求 服务器
 - 服务器 响应 浏览器
 - 浏览器 请求 服务器2
 - 服务器2 响应 浏览器
 
代码
转发
@GetMapping("/test-forward")
public void testForward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // request.getRequestDispatcher("https://www.baidu.com").forward(request, response); // 无法跨域 forward
    request.getRequestDispatcher("/test").forward(request, response); // 只能转发至内部 servlet
}
@GetMapping("/test")
@ResponseBody
public String test() {
    return "来自test的结果";
}
重定向
@GetMapping("/test-redirect")
public void testRedirect(HttpServletResponse response) throws IOException {
    response.sendRedirect("https://www.baidu.com");
}
                Views: 15,073 · Posted: 2020-03-28
            
            ————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
        Loading...