学习记录:转发和重定向

转发(Forward)和重定向(Redirect)是两种不同的 Web 请求处理方式,它们在功能和行为上有着显著的区别。

区别

转发(Forward):

服务器内部跳转:转发是服务器内部的行为,即在服务器内部进行请求处理,不涉及客户端的重定向。
单次请求-响应周期内有效:转发是在单次请求-响应周期内完成的,客户端浏览器并不知道发生了转发。
资源共享:转发时,原始请求的信息(如请求参数)会被传递给转发的目标资源,因此目标资源可以共享原始请求的信息。
地址栏不变:浏览器的地址栏中显示的 URL 不会发生变化,仍然是原始请求的 URL。
内部转发机制:在 Java Web 开发中,转发通常通过 RequestDispatcher 接口的 forward() 方法实现。

重定向(Redirect):

客户端跳转:重定向是客户端的行为,服务器收到请求后,会返回一个特殊的响应码和新的 URL 地址,告诉客户端重新发起新的请求。
两次请求-响应周期:重定向会触发客户端发起新的请求,因此涉及两次请求-响应周期,第一次请求到达服务器后,服务器返回重定向响应码和新的 URL 地址;客户端浏览器收到响应后,会重新发起新的请求。
地址变化:由于是客户端跳转,因此浏览器地址栏会显示新的 URL 地址,而不是原始请求的 URL。
不共享请求信息:重定向是两次独立的请求-响应周期,因此不会共享原始请求的信息。
HTTP 状态码:重定向使用 3xx 状态码,常见的有 301(永久重定向)和 302(临时重定向)等。
外部跳转:重定向通常用于跳转到其他网站或者不同的 URL 路径。
总之,转发是在服务器内部进行的请求处理,不涉及客户端的重定向,而重定向是客户端发起的新的请求,由服务器返回新的 URL 地址进行跳转。选择使用转发还是重定向取决于具体的需求和场景。

例子

转发(Forward)的例子:

假设有一个网站,用户登录后进入了一个受保护的页面 /user/profile,但是用户需要进行身份验证才能查看该页面。这时,服务器可以使用转发来处理用户的请求。

当用户访问 /user/profile 时,服务器收到请求后,会检查用户的登录状态。
如果用户已登录,则服务器会直接转发请求到 /user/profile 页面对应的处理程序,该处理程序会生成用户的个人资料并将其显示在页面上。
如果用户未登录,则服务器可能会将请求转发到登录页面 /login,要求用户先登录。
用户在登录页面登录成功后,服务器会再次转发原始请求到 /user/profile 页面。
在这个过程中,用户的浏览器地址栏不会发生变化,因为这一切都是在服务器内部进行的,用户无法察觉到请求的转发。

重定向(Redirect)的例子:

假设用户访问一个网站上已删除的页面,比如 /old-page,而网站管理员希望用户被重定向到一个新的页面 /new-page。

当用户访问 /old-page 时,服务器会收到请求后,检测到该页面已经被删除。
服务器会返回一个 HTTP 重定向响应码,比如 301(永久重定向)或 302(临时重定向),以及新的页面地址 /new-page。
用户的浏览器收到重定向响应后,会自动发送新的请求到 /new-page。
用户最终会在浏览器中看到 /new-page 页面的内容,并且浏览器地址栏中的 URL 会显示为 /new-page。
在这个过程中,用户能够察觉到浏览器地址栏中 URL 的变化,因为这是一个客户端发起的重定向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823672.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【八股】Redisson分布式锁

Redisson分布式锁 主要了解了Redisson分布式锁实现的三个功能: 1.可重入 -> 防止死锁 2.可重试(i.e. 非阻塞获取锁) 3.自动续约 1. 可重入 原理: 利用Redis的Hash结构,记录了使用当前锁的线程id和重用次数&#…

Linux系统——Elasticsearch企业级日志分析系统

目录 前言 一、ELK概述 1.ELK简介 2.ELK特点 3.为什么要使用ELK 4.完整日志系统基本特征 5.ELK工作原理 6.Elasticsearch介绍 6.1Elasticsearch概述 6.2Elasticsearch核心概念 7.Logstash介绍 7.1Logstash简介 7.2Logstash主要组件 8.Kibana介绍 8.1Kibana简介 …

考研数学|「基础」和「强化」阶段分别怎么做?

从目前考研数学的趋势来看,更加注重数学基础的理解和计算量。也就是基础知识和计算,如何锻炼这两种能力就显得尤为重要。希望我的复习经验可以给到读者一些启发。 数学规划 从备考过程来看,数学的复习可以分为三个阶段:1、基础阶…

监控系统Prometheus--与第三方框架集成

文章目录 Prometheus和Flink集成拷贝jar包修改Flink配置为了运行测试程序,启动netcat启动hdfs、yarn,提交flink任务到yarn上可以通过8088跳到flinkUI的job页面,查看指标统计刷新Prometheus页面,如果有flink指标,集成成…

linux线程的同步

目录 1.死锁概念 2.接口 3.代码展示 1.死锁概念 死锁的四个必要条件(必须同时满足): 1.互斥条件:一个资源每次只能被一个执行流使用(前提)。 2.请求与保持条件:一个执行流因请求资源而堵塞…

PHP 生成压缩包、读取压缩包

1. PHP 生成压缩包 下面是 PHP 将本地文件生成压缩包的核心代码,在此基础上可进行扩展封装 // 压缩包名称$name test.zip;// 创建压缩包对象$zip new ZipArchive;// 打开压缩包$zip->open($name, ZipArchive::CREATE);// 本地文件绝对路径$path __DIR__ . /In…

如何查看Postman的版本信息?

如何查看Postman的版本信息 一、为何需要查看版本信息?二、查看Postman的版本信息的步骤 一、为何需要查看版本信息? 不同的版本之间可能存在功能和界面的差异。 二、查看Postman的版本信息的步骤 1、打开 Postman 2、打开设置项 点击页面右上角的 “…

41.缺失的第一个正数

题目描述 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。示例 1:输入:nums [1,2,0] 输出:3 解释:范围 [1,2] 中的数字都在…

clipper一些数据结构(入门初识(一))

clipper一些数据结构(一) Clipper库是一个用于执行多边形裁剪(clipping)和偏移(offsetting)操作的开源C库。在Clipper库中,点和多边形(polygon)是基本的数据结构。Clipp…

Spring-tx事务管理

第五章 Spring声明式事务 一 声明式事务概念 1.1 编程式事务 手动编写程序来管理事务,即通过编写代码的方式来实现事务的提交,和回滚。 1.2 声明式事务 声明式事务是指使用注解或配置文件来控制事务的提交和回滚。 开发者只需要添加注解或者配置文…

陇剑杯 流量分析 webshell CTF writeup

陇剑杯 流量分析 链接:https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码:haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ …

[SWPUCTF 2021 新生赛]error

如果 flag 只出现一半,用substr(A,B,C) 查询flag 1 and (select extractvalue(1,concat(~,(select substr((select flag from test_tb), 1 , 31))))) # 0-30位 左边30位 1and (select extractvalue(1,concat(~,(select substr((select flag from test_tb), 31 , 6…

vivado 设置 VIO 核以执行测量、查看 VIO 核状态

设置 VIO 核以执行测量 您添加到自己的设计中的 VIO 核会显示在“硬件 (Hardware) ”窗口中的目标器件下。如果未显示这些 VIO 核 , 请右键 单击器件并选择“ Refresh Hardware ”。这样将重新扫描 FPGA 或 ACAP 并刷新“ Hardware ”窗口。 注释 &#xff…

阿里云4核8G云服务器价格多少钱?700元1年

阿里云4核8G云服务器价格多少钱?700元1年。阿里云4核8G服务器租用优惠价格700元1年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采用Intel(R) Xeon(R…

Java面试必问题41:SpringCloud五大组件是哪几个 SpringCloud 和 SpringBoot 的区别和关系

SpringCloud五大组件是哪几个 Spring Cloud是一个用于构建分布式系统的开发工具包,它提供了一系列组件来简化分布式系统的开发和管理。以下是Spring Cloud中的五个核心组件: 1. 服务注册与发现(Eureka):Eureka是一个用…

【AcWing】蓝桥杯集训每日一题Day28|组合计数|二项式定理|杨辉三角|211.计算系数(C++)

211.计算系数 211. 计算系数 - AcWing题库难度:简单时/空限制:1s / 64MB总通过数:3703总尝试数:7790来源:《算法竞赛进阶指南》NOIP2011提高组算法标签二项式定理组合计数 题目内容 给定一个多项式 ( a x b y ) k …

Eigen库从入门到放弃(1. VSCode配置及Eigen下载和安装)

最近在做后处理的事情。每次看到Python那么酷炫的切片、矩阵乘法、广播,再看看C,我就陷入无尽痛苦。为什么Numpy没有C版本,为什么后处理都是手撸,Eigen库有很多方法可以平替Numpy,但是我不是很了解,都是现查…

久吾高科技股份有限将莅临2024第13届生物发酵展

参展企业介绍 江苏久吾高科技股份有限公司成立于1997年,是一家专注从事新材料研发与整体解决方案的高科技企业。2017年3月在深交所A股创业板上市。公司是首批认定的guojiaji高新技术企业、国家专精特新“小巨人”企业、国家制造业单项、中国膜行业陶瓷膜领域龙头企…

使用vite从头搭建一个vue3项目(三)vite.config.js配置

目录 一、声明环境变量配置文件二、vite.config.js基础配置1、defineConfig()、loadEnv()2、plugins配置项3、server配置项4、resolve配置项5、css配置项6、build配置项 三、vite.config.js配置完整代码 VITE版本:v5.2.8 一、声明环境变量配置文件 在根目录下新建…

pta L1-045 宇宙无敌大招呼

L1-045 宇宙无敌大招呼 分数 5 全屏浏览 切换布局 作者 陈越 单位 浙江大学 据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球…