📜  Express.js res.redirect()函数(1)

📅  最后修改于: 2023-12-03 15:14:57.498000             🧑  作者: Mango

Express.js res.redirect()函数

在使用 Express.js 开发 Web 应用时,经常需要重定向用户到不同的 URL 地址,此时就需要用到 res.redirect() 函数。本文将深入介绍 res.redirect() 函数的用法和相关知识点。

什么是重定向?

重定向是指在服务器端告诉浏览器,当前访问的网页并不是请求的网页,而是另一个网页。例如,用户访问 /page1 页面时,服务器返回一个重定向指令,告诉浏览器该访问 /page2 页面,此时浏览器会立即跳转到 /page2 页面。

res.redirect() 函数

res.redirect() 函数的作用是返回一个重定向指令,告诉浏览器跳转到另一个页面。

语法:

res.redirect([status,] path)

参数说明:

  • status (可选):HTTP 状态码,默认为 302。
  • path:重定向的页面路径。

示例代码:

app.get('/', function(req, res) {
  res.redirect('/home');
});

app.get('/home', function(req, res) {
  res.send('Welcome to home page!');
});

当用户访问根路由 / 时,服务器会返回一个重定向指令,告诉浏览器跳转到 /home 页面。此时,浏览器会跳转到 /home 页面,显示 Welcome to home page!

重定向的 HTTP 状态码

res.redirect() 函数默认的 HTTP 状态码是 302,表示临时重定向。这种情况下,浏览器会将原本请求的 URL 地址保留下来,同时跳转到新的地址。

如果需要指定 HTTP 状态码,可以在调用 res.redirect() 函数时传入一个数字参数。常用的状态码有以下几种:

  • 301 Moved Permanently:永久重定向。表示请求的资源已经被永久移动到新的位置,搜索引擎会更新索引。
  • 302 Found:临时重定向(默认状态码)。表示请求的资源暂时被移动到新的位置,搜索引擎不会更新索引,而保留原来的 URL 地址。
  • 303 See Other:查看其他位置。表示请求的资源可以在另一个 URL 找到,适用于 POST 请求完成后重定向。
  • 307 Temporary Redirect:临时重定向。与 302 Found 类似,但明确不允许 POST 请求变成 GET 请求。

示例代码:

app.get('/old_url', function(req, res){
  res.redirect(301, '/new_url');
});
URL 地址生成

在使用 res.redirect() 函数时,可以传入完整的 URL 地址,也可以传入相对路径地址。

相对路径地址是指相对于当前路径的地址,例如 /foo../bar 等。

另外,使用 res.redirect() 函数生成 URL 地址时,还可以使用 req.protocolreq.get('host') 等对象获取当前请求的协议和主机名信息。

示例代码:

app.get('/old_url', function(req, res){
  const newUrl = req.protocol + '://' + req.get('host') + '/new_url';
  res.redirect(newUrl);
});
结语

res.redirect() 函数是 Express.js 中重要的重定向函数之一,掌握此函数的用法和知识点,对于开发 Web 应用十分有用。希望本文能够帮助读者深入了解 res.redirect() 函数,同时也希望读者能够在实际项目中灵活运用此函数。