今天给大家说下重定向:
重定向是一个很广泛的概念,即通过各种方法将各种网络请求重新定个方向转到其它位置,比如网页重定向、域名重定向、数据报文重定向等。
在网站开发中,重定向的应用场景太多了,比如用户未登录时,将它输入的网址自动跳转为登录页;用户访问旧版网址时,自动跳转到新版网页。重定向不仅是导游,也是一名霸道的保安。
因此,很多大站点都会采用重定向技术。比如访问百度 baidu.com,按 F12 查看开发者控制台,可以看到网址通过 302 重定向,自动跳转为了 www.baidu.com。
那问题就来了,啥是 302 重定向?
不妨看一看常见的重定向 HTTP 状态码。
重定向 HTTP 状态码
和重定向有关的 HTTP 状态码主要是 301、302、303、307、308,最常用的是 301 和 302,可以看看 MDN 官方对它们的解释。
301 是永久重定向(Moved Permanently)说明请求的资源已经被 永久 移动到了由 Location 头部指定的 url 上,是固定的不会再改变,搜索引擎会根据该响应修正。
而 302 是暂时性转移(Moved Temporarily,或者 Found),表明请求的资源被 暂时 移动到了由 Location 头部指定的 URL 上。浏览器会重定向到这个 URL, 但是搜索引擎不会对该资源的链接进行更新。
虽然 301 和 302 都能够将用户输入的网址 A, 改为重定向后的网址 B,但他们还是有区别的:
搜索引擎区别:301 表示原地址 A 的资源已被移除,永远无法访问,搜索引擎抓内容时会将网址 A 全部替换为 B;而 302 表示网址 A 还活着,搜索引擎会在抓取网址 B 新内容的同时,保留网址 A 的记录。
安全性:302 跳转有网站劫持的风险,导致网站被盗用。