广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Express URL跳转(重定向)的实现方法
  • 876
分享到

Express URL跳转(重定向)的实现方法

跳转重定向方法 2022-06-04 17:06:27 876人浏览 泡泡鱼
摘要

Express是一个基于node.js实现的WEB框架,其响应Http请求的response对象中有两个用于URL跳转方法res.location()和res.redirect(),使用它们可以实现URL的

Express是一个基于node.js实现的WEB框架,其响应Http请求的response对象中有两个用于URL跳转方法res.location()和res.redirect(),使用它们可以实现URL的301或302重定向。

res.location(path)


res.location(path)

下面列举了几种,设置http响应头Location的方法


res.location('/foo/bar');
res.location('http://example.com');
res.location('back');

路径值back具有特殊的意义,这个涉及到请求头Referer中指定的URL,如果Referer头没有指定,将会设置为'/'。

Express通过Location头将指定的URL字符串传递给浏览器,它并不会对指定的字符串进行验证(除'back'外)。而浏览器则负责将当前URL重定义到响应头Location中指定的URL。

res.redirect([status,] path)

其中参数:

status:{Number},表示要设置的HTTP状态码 path:{String},要设置到Location头中的URL

使用指定的http状态码,重定向到指定的URL,如果不指定http状态码,使用默认的状态码”302“:”Found“,


res.redirect('/foo/bar');
res.redirect('http://example.com');
res.redirect(301, 'http://example.com');
res.redirect('../login');

重定向可以是一个完整的URL,这样会重定向到一个不同的站点上。


res.redirect('http://Google.com');

重定向也可以相对于所在主机的根目录,例如,如果你的程序运行在:http://example.com/admin/post/new上下面的代码将会重定向到如下地址:http://example.com/admin


res.redirect('/admin');

重定向也可以相对于当前的URL,例如:从http://example.com/blog/admin/这个地址(注意反斜杠),下面的代码将会重定向到地址:http://example.com/blog/admin/post/new


res.redirect('post/new')

在从地址: http://example.com/blog/admin重定向到 post/new,如果没有反斜杠的话将会重定向到:http://example.com/blog/post/new

如果你感觉上面的行为很迷惑,想想文件目录和文件的路径,这会让你更好理解。

相对路径的重定向也是允许的,如果你的地址是: http://example.com/admin/post/new,下面的代码将会重定向到http//example.com/admin/post这个地址:


res.redirect('..');

back重定向,重定向到请求的referer,当没有referer请求头的情况下,默认为‘/'


res.redirect('back'); 

URL重定向原理

查看图片

进行URL重定向时,服务器只在响应信息的HTTP头信息中设置了HTTP状态码和Location头信息。

当状态码为301或302时(301-永久重定向、302-临时重定向),表示资源位置发生了改变,需要进行重定向。

Location头信息表示了资源的改变的位置,即:要跳重定向的URL。

location()与redirect()的比较

Express的response对象,是对node.js原生对象ServerResponse的扩展。location()方法只会设置Location头,而redirect()方法除了会设置Location头外还可自动或手头设置HTTP状态码。理论上讲两者可以实现重定向。

location()方法实现过程大致如下:


res.location = function(url){
 var req = this.req;

 // "back" 是 referrer的别名
 if ('back' == url) url = req.get('Referrer') || '/';

 // 设置Lcation
 this.setHeader('Location', url);
 return this;
};

从以上代码可以看出,location()方法本质上是调用了ServerResponse对象的setHeader()方法,但并没有设置状态码。通过location()设置头信息后,其后的代码还会执行。

使用location()方法实现URL的重定向,还要手动设置HTTP状态码:


res.location('http://itbilu.com');
res.statusCode = 301;

如果需要立即返回响应信息,还要调用end()方法:


res.location('http://itbilu.com');
res.statusCode = 301;
res.end('响应的内容');

// 或
res.location('http://itbilu.com');
res.sent(302);

redirect()方法实现过程大致如下:


res.redirect = function(url){
 var head = 'HEAD' == this.req.method;
 var status = 302;
 var body;

 // 一些处理
 ……

 // 通过 location 方法设置头信息
 this.location(url);
 
 // 另一些处理
 ……

 // 设置状态并返回响应
 this.statusCode = status;
 this.set('Content-Length', Buffer.byteLength(body));
 this.end(head ? null : body);
};

从以上代码可以看出,redirect()方法是对location()方法的扩展。通过location()设置Loction头后,设置HTTP状态码,最后通过ServerResponse对象的end()方法返回响应信息。调用redirect()方法后,其后的代码都不会被执行

重定向与不重定向

在使用的过程中,redirect()方法大多能重定向成功,而location()方法则不太确定,有时可以成功有时不能成功。这与我们的用法有关。

上面讲过,URL重定向是在浏览器端完成的,而URL重定向与HTTP状态码和Location头有关。浏览器首先会判断状态码,只有当状态码是:301或302时,才会根据Location头中的URL进行跳转。

所以,使用location()设置头信息,而不设置状态码或状态码不是301或302,并不会发生重定向:


res.location('http://itbilu.com');
res.sent(200);

而使用redirect()设置的状态码不是301或302也不会发生跳转:


res.redirect(200, 'http://itbilu.com');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Express URL跳转(重定向)的实现方法

本文链接: https://www.lsjlt.com/news/12704.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Express URL跳转(重定向)的实现方法
    Express是一个基于Node.js实现的Web框架,其响应HTTP请求的response对象中有两个用于URL跳转方法res.location()和res.redirect(),使用它们可以实现URL的...
    99+
    2022-06-04
    跳转 重定向 方法
  • php设置301重定向跳转的方法
    本文将为大家详细介绍“php设置301重定向跳转的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php设置301重定向跳转的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去...
    99+
    2023-06-06
  • response.sendRedirect()实现重定向(页面跳转)
    在某些情况下,针对客户端的请求,一个 Servlet 类可能无法完成全部工作。这时,可以使用请求重定向完成这一工作。 请求重定向指 Web 服务器接收到客户端的请求后,可能由于某些条...
    99+
    2023-05-17
    response.sendRedirect 重定向 response.sendRedirect页面跳转
  • WordPress 评论者超链接实现重定向跳转的方法
    垃圾评论已经不是一个新鲜的东西了,相信只要是日独立IP超过2000的网站,只要开放评论的话,每天都会收到几十条乱七八糟的垃圾评论。 链接到的垃圾站过多,可能会造成网站在搜索引擎中被降权(主要是百度,Google 通过no...
    99+
    2022-06-12
    超链接 重定向跳转
  • php如何实现301重定向跳转
    这篇文章主要讲解了“php如何实现301重定向跳转”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何实现301重定向跳转”吧!方法:1、用“header('HTTP/1.1 3...
    99+
    2023-06-20
  • 利用Nginx实现URL重定向的简单方法
    目录1. 概述2. 使用 Nginx 实现 URL 的重定向2.1 使用场景2.2 单纯的重定向2.3 依据原 URL 重定向补充:Nginx根据url参数重定向1.判断url路径2...
    99+
    2022-11-13
  • 教你如何实现SpringCloud URL的重定向及转发
    这篇文章主要介绍了SpringCloud URL重定向及转发代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下Web UI项目中, 很多 Spring controller 视图函数直...
    99+
    2023-06-02
  • IIS中301重定向跳转web.config规则和http重定向模块的实现教程
    目录web.config规则http重定向模块1. IIS中添加一个要跳转的域名网站(如a.net)2. IIS中在欲重定向的网页或目录上按右键,选中“重定向到URL&r...
    99+
    2023-05-15
    IIS中301重定向跳转web.config规则 IIS中http重定向模块
  • IIS中301重定向跳转web.config规则和http重定向模块如何实现
    今天小编给大家分享一下IIS中301重定向跳转web.config规则和http重定向模块如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2023-07-05
  • PHP获取重定向URL的方法是什么
    本篇内容介绍了“PHP获取重定向URL的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP获取重定向URL的方法:1、使用get...
    99+
    2023-06-21
  • php中重定向网页跳转方法总结案例教程
    PHP中重定向网页跳转页面的方法(共三种) 第一种:利用header()函数进行重定向,这也是我用的较多的。(注意!locationhe和“:”之间不能有空格,否则无作用!) &...
    99+
    2022-11-12
  • Laravel 中如何实现 ASP 重定向接口的跳转功能?
    Laravel 是一款流行的 PHP 框架,为开发者提供了许多方便的功能和工具。ASP 是微软公司开发的一种服务器端脚本语言,用于开发 Windows 平台下的 Web 应用程序。在 Laravel 中如何实现 ASP 重定向接口的跳转功能...
    99+
    2023-06-23
    重定向 接口 laravel
  • 虚拟主机重定向url的方法是什么
    虚拟主机重定向URL的方法有多种,以下是常用的几种方法:1. 使用.htaccess文件:可以在虚拟主机的根目录下创建一个名为.ht...
    99+
    2023-09-05
    虚拟主机
  • Python实现网络端口转发和重定向的方法
    本文实例讲述了Python实现网络端口转发和重定向的方法。分享给大家供大家参考,具体如下: 【任务】 需要将某个网络端口转发到另一个主机(forwarding),但可能会是不同的端口(redirecting...
    99+
    2022-06-04
    端口 重定向 方法
  • 如何利用二维码实现ASP重定向的快速跳转?
    随着移动互联网的快速发展,二维码已经成为了一种方便快捷的信息传递方式。不仅可以用于传递网址,还可以用于支付、下载等多种场景。在ASP网站中,利用二维码实现快速跳转已经成为一种非常流行的方式。本文将介绍如何利用二维码实现ASP重定向的快速跳转...
    99+
    2023-10-17
    重定向 二维码 spring
  • PHP获取重定向URL的几种方法是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑1、使用get_headers函数php自带的get_headers函数可以获取服务器响应一个HTTP请求所发送的所有标头,我们可以尝试用该函数实现。function ...
    99+
    2018-05-27
    PHP 获取重定向URL
  • php实现跳转的方法
    本文将为大家详细介绍“php实现跳转的方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php实现跳转的方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。php有什...
    99+
    2023-06-06
  • 使用springboot跳转到指定页面和(重定向,请求转发的实例)
    目录springboot跳转到指定页面controller的写法springboot重定向和请求转发springboot重定向springboot的请求转发springboot转发和...
    99+
    2022-11-12
  • PHP中利用路由模块实现URL重定向和参数过滤的方法
    随着互联网的发展,网站的访问量不断增加,URL的处理变得更加重要。为了提高网站的安全性和可维护性,我们需要对URL进行重定向和参数过滤。在PHP中,可以通过路由模块来实现这些功能。本文将介绍如何使用路由模块实现URL重定向和参数过滤,并提供...
    99+
    2023-10-21
    URL重定向 路由模块 参数过滤
  • PHP和Django教程:重定向的实现方法
    PHP和Django教程:重定向的实现方法 重定向(Redirect)是Web开发中常用的一种技术,它可以将用户从当前页面或URL地址重定向到另一个页面或URL地址。重定向通常用于实现用户登录、注册、退出等功能,以及处理异常请求等场景。本文...
    99+
    2023-11-12
    django 教程 重定向
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作