当前位置: 首页 > news >正文

【express-generator】08-路由重定向

前言

通过前面两篇文章的讲解,我们已经介绍完第二阶段的前两点,本篇介绍第三点:路由重定向。

1. 路由重定向概述

路由重定向是指在服务器端将客户端的请求从一个 URL 重定向到另一个 URL 的过程。这通常通过 HTTP 状态码(如 301 永久重定向、302 临时重定向)和 Location 响应头来实现。

2. 重定向的用途

  • URL 规范化

    • 将多个 URL 规范化为一个标准 URL,避免重复内容。例如,将 http://example.comhttp://example.com/ 规范化为同一个 URL。

  • 维护旧链接

    • 在页面或资源移动后,保持旧链接的有效性。例如,将旧的博客文章 URL 重定向到新的 URL。

  • 用户引导

    • 将用户从一个页面引导到另一个页面,例如登录后跳转到主页。

  • 安全考虑

    • 在某些情况下,重定向可以用于安全目的,例如防止直接访问某些页面。

3. Express 中的重定向

在 Express 中,可以使用 res.redirect() 方法实现重定向。这个方法可以指定重定向的目标 URL,包括内部路由或外部链接。默认情况下,res.redirect() 使用 302 临时重定向状态码,但也可以指定其他状态码。

常见的重定向状态码:

  • 301 永久重定向:表示请求的资源已被永久移动到新的位置。

  • 302 临时重定向:表示请求的资源已被临时移动到新的位置。

  • 307 临时重定向:与 302 类似,但要求客户端保持请求方法不变。

  • 308 永久重定向:与 301 类似,但要求客户端保持请求方法不变。

4. 重定向的类型

  • 内部重定向

    • 将请求重定向到同一个应用内的其他路由。例如,将 /old-path 重定向到 /new-path

  • 外部重定向

    • 将请求重定向到外部网站或资源。例如,将 /external 重定向到 https://example.com

  • 条件重定向

    • 根据某些条件(如用户身份验证状态)决定是否重定向。例如,如果用户未登录,重定向到登录页面。

5. 重定向的实现

示例 1:内部重定向

router.get('/old-path', (req, res) => {res.redirect('/new-path');
});

 通过一个简单的API测试,在响应结果可以看见提示词重定向到/new-path,同时右上角的状态也对应显示302(临时重定向)

 示例 2:外部重定向

router.get('/outside', (req, res) => {res.redirect('https://baidu.com');
});

 一样会有重定向提示以及302的状态码,只不过这次重定向是外部路由(这里我设置成https://baidu.com)

示例 3:条件重定向 

router.get('/dashboard', function(req, res, next) {if (!req.body.user) {res.redirect('/login');} else {res.send('Welcome to the dashboard!');}
});

需要携带一个user参数,如果没有,则重定向到/login 

 携带一个user参数的响应结果:

http://www.lryc.cn/news/526522.html

相关文章:

  • 搭建Spring Boot开发环境
  • Spatial Group-wise Enhance (SGE) module
  • 二叉搜索树中的搜索(力扣700)
  • 记录让cursor帮我给ruoyi-vue后台管理项目整合mybatis-plus
  • 【可实战】Linux 系统扫盲、 Shell扫盲(如何写一个简单的shell脚本)
  • sqlzoo答案4:SELECT within SELECT Tutorial
  • 【fly-iot飞凡物联】(20):2025年总体规划,把物联网整套技术方案和实现并落地,完成项目开发和课程录制。
  • Lucene常用的字段类型lucene检索打分原理
  • 适用于IntelliJ IDEA 2024.1.2部署Tomcat的完整方法,以及笔者踩的坑,避免高血压,保姆级教程
  • XSS靶场通关详解
  • Excel 技巧15 - 在Excel中抠图头像,换背景色(★★)
  • 备忘-humanplus相关的代码解析
  • 青少年编程与数学 02-008 Pyhon语言编程基础 01课题、语言概要
  • XSS (XSS)分类
  • [Linux]el8安全配置faillock:登录失败达阈值自动锁定账户配置
  • 最新-CentOS 7安装1 Panel Linux 服务器运维管理面板
  • selenium定位网页元素
  • 積分方程與簡單的泛函分析8.具連續對稱核的非齊次第II類弗雷德霍姆積分算子方程
  • 长理算法复习
  • 机器学习-K近邻算法
  • 使用rsync+inotify简单实现文件实时双机双向同步
  • Ubuntu 24.04 LTS开机自启动脚本设置方法
  • 谈谈对JavaScript 中的事件冒泡(Event Bubbling)和事件捕获(Event Capturing)的理解
  • 解读2025年生物医药创新技术:展览会与论坛的重要性
  • 【第七天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-一种常见的分治算法(持续更新)
  • Spring Data JPA 实战:构建高性能数据访问层
  • Python JSON:深入解析与高效应用
  • 【C语言进阶(四)】指针进阶详解(上)
  • DDD架构实战第五讲总结:将领域模型转化为代码
  • FPGA实现任意角度视频旋转(完结)视频任意角度旋转实现