一、简介

重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。

二、重定向三种方式

1、直接返回值中加重定向:“redirect:要访问的网址”;

这种方法需要在maven中配置spring-boot-starter-thymeleaf模板,并且需要页面和项目在一个位置,类似于jsp的跳转。

public String toRedirect() {
    //"redirect:要访问的相对网址或绝对网址?参数名="+参数值;
    return "redirect:要访问的相对网址或绝对网址?参数名="+参数值;
}

2、用modelAndView对象来进行,和上一中方法类似,仅可以跳转项目内页面。

 public ModelAndView toRedirect() {
        ModelAndView modelAndView = new ModelAndView(需要跳转的页面路径);
        return modelAndView;
    }

3、使用response的重定向功能,此方法可以跳转外网url。

public void toRedirect(HttpServletResponse response) throws Exception{
	response.sendRedirect("https://www.baidu.com");
}

三、301与302重定向区别

301永久重定向使得搜索引擎在抓取新内容的同时将旧的网址替换为重定向后的网址。

302临时性定向使得搜索引擎会抓去新的内容却保留旧的网址。

适用场景区别:

301:域名切换HTTP迁移到HTTPS
302:未登录用户访问个人中心时重定向到登录页面404页面提示后跳转到首页

备注:302与网址劫持

网址劫持和302重定向有什么关系呢?这个要从搜索引擎如何处理302重定向说起。
当从网址A做一个302重定向到网址B时,服务器隐含的意思是网址A可能会重新启用。正常情况,大部分搜索引擎应当去抓取302重定向之后的网址B。但是可能由于B网址相对于A网址过于复杂,这样搜索引擎就会觉得网址A对用户更加友好,因而在重定向之后任然显示旧的网址A,但是显示网址B的内容。这就是网址劫持。
在平常使用手机的过程当中,有时候会发现网页上会有浮动的窗口,或者访问的页面不是正常的页面,这就可能是运营商通过某种方式篡改了用户正常访问的页面。其中有一种方式就是通过返回302重定向让用户浏览器跳转到另外的网址。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐