网站首页 > 技术文章 正文
前言
页面的重定向想必大家都知道,如果你是用过 koa ,那么通过如下代码,就能让网页跳转至指定页面:
或者你用过 java 的重定向:
那么框架内部到底是怎么实现页面重定向的呢?这篇小短文可能会让你更加清楚其中的一些原理。
重定向
概念
当你在浏览器访问 A 地址时,你会看到浏览器会刷新进度条,地址栏被更新为 B 地址。这就是 URL 重定向。
这样类似的技术,就是由 Http 协议定义的。重定向操作是由服务端向客户端发送特定的响应状态来触发,这类状态有个专门的状态码:3xx ,当浏览器接收后,将会进行页面的重定向,即地址发生了跳转。
几种状态码
302 和 301 的区别
上面列了许多 3xx 的状态码,但平时我们最多用的是 301 和 302,这里就详细解释这两个的区别:
301
永久重定向。如果 A 地址被 301 到 B 地址后,后续再次请求 A 地址的话,浏览器就会默认首次请求 B 地址,不会再有 A 地址的请求。
等看到第一次访问 /api/books/111 时,页面被重定向到 /api/books,浏览器发送两次请求。但后续再次请求 /api/books/111 时,直接请求了 /api/books 。
所以通常该状态码用于网站重构,告知搜索引擎你以后访问我 301 重定向的地址。
302
相反,302 就是临时重定向。
平时我们登陆页面的授权跳转都是基于此状态码。因为客户端访问的页面是临时不可用,满足了某些条件后,可以继续使用。
对比 301 的请求,能看到两次 /api/books/222 的请求都被“记录在案”。
koa 中的重定向
来看下 koa 中 response 的 redirect 的重定向源码:
能看到在这段重定向的代码中,分别设置了 location 和 状态码,依靠他们来完成重定向的功能。
当然我们可以自己简单的实现一个服务器重定向功能:
总结
如果你只是单纯的使用框架的 redirect api,而不清楚其内部的原理,可能这篇会帮助你了解更多些。
毕竟这是 Http 的基础,会让你对浏览器的重定向有个概念。
关于我
一位“前端工程师”,乐于实践,并分享前端开发经验。
如果有问题或者想法,欢迎各位评论留言,愿大家共同进步。
关注【前端雨爸】,查阅更多前端技术心得。
- 上一篇: 全栈工程师都要会什么?
- 下一篇: 都前后端分离了,咱就别做页面跳转了!统统 JSON 交互
猜你喜欢
- 2024-12-02 微信小程序跳转到第三方H5网页
- 2024-12-02 几行代码搞定 Spring Cloud OAuth2 授权码模式三个页面定制
- 2024-12-02 SpringMVC 04: SpringMVC中4种页面跳转方式
- 2024-12-02 实战:Springboot集成jsp页面报404四种解决方案
- 2024-12-02 从零开始的前端请求之旅:Fetch-API篇
- 2024-12-02 揭秘前端无刷新提交数据的黑科技 - React Server Actions深度解析
- 2024-12-02 SpringBoot+Vue项目实战之前后端分离开发登录页面
- 2024-12-02 微信支付前后端实现(Vue+Spring Boot)
- 2024-12-02 三、Uni-app + vue3 页面如何跳转及传参?
- 2024-12-02 GitHub精选 | 快速搞定第三方授权登录
你 发表评论:
欢迎- 07-08记oracle日志挖掘实操&查询归档不正常增长情况(一)
- 07-08Oracle 伪列!这些隐藏用法你都知道吗?
- 07-08orcl数据库查询重复数据及删除重复数据方法
- 07-08重大故障!业务核心表被truncate删除,准备跑路……
- 07-08oracle数据恢复—oracle执行truncate命令误删除数据的数据恢复
- 07-08Oracle-rac 修改scanip(oracle 修改sequence cache)
- 07-08ORACLE RAC CDB和PDB切换(oracle数据库rac切换)
- 07-08Oracle rac haip作用(oracle rac的典型特征)
- 596℃几个Oracle空值处理函数 oracle处理null值的函数
- 590℃Oracle分析函数之Lag和Lead()使用
- 577℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 573℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 569℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 562℃【数据统计分析】详解Oracle分组函数之CUBE
- 549℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 542℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- 记oracle日志挖掘实操&查询归档不正常增长情况(一)
- Oracle 伪列!这些隐藏用法你都知道吗?
- orcl数据库查询重复数据及删除重复数据方法
- 重大故障!业务核心表被truncate删除,准备跑路……
- oracle数据恢复—oracle执行truncate命令误删除数据的数据恢复
- Oracle-rac 修改scanip(oracle 修改sequence cache)
- ORACLE RAC CDB和PDB切换(oracle数据库rac切换)
- Oracle rac haip作用(oracle rac的典型特征)
- 新手小白怎么学UI设计 推荐学习路线是什么
- 超实用!0基础UI设计自学指南(0基础学ui设计好就业吗)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)