【计算机网络】HTTP 重定向

HTTP 重定向

基本含义

在 HTTP 请求服务中,服务器可以通过返回一个状态码为 3xx 的重定向响应来告知调用方(通常是浏览器)当前访问的链接需要进行重定向访问,响应头中会带有一个Location 字段,注明重定向后的目的地址。浏览器接收到这个重定向响应后,会访问 Location 中指定的链接。

在这里插入图片描述

用户对于这个过程通常是没有太明显的感知的,一切都是在客户端和服务端之间完成,用户最直接的感知就是页面响应的时间可能稍微增加。不过如果在重定向过程中出现其他异常,例如重定向的请求不存在或者网络超时等,用户还是能够明显感受到页面加载缓存的。

重定向相关的状态都是 3XX 的形式,常见的主要有一下9种状态码:

状态码状态描述含义
300Multiple Choices请求的 URL 对应有多个资源,返回 300 的同时还会返回一个可选列表,用户通过头部的 Location 字段可以决定首选内容
301Moved Permanently请求的 URL 已经被修改,响应头的 Location 字段提供资源现在的 URL,客户端将使用 GET 方法发起新的请求,并且将这一重定向结果缓存起来
302Found接收到 302 响应后,同301,会使用 GET 方法发起新的请求。但客户端只将 Location 返回的 URL 作为临时资源使用,将来请求时还是使用原来 URL 首先发起请求。
303See Other在 PUT 或者 POST 请求之后进行重定向,这样在结果页就不会再次触发重定向了。
304Not Modified表示资源未修改,本地缓存仍然可用
305Use Proxy表示必须通过 Location 提供的代理位置来访问资源
306Switch Proxy表示后续请求应该使用指定的代理,但是在最新版的规范中,306 已经不再被使用
307Temporary Redirect临时重定向,与 302 类似,但客户端使用原来的方法(如 POST)发起新的请求
308Permanent Redirect永久重定向,与 301 类似,但客户端使用原来的方法(如 POST)发起新的请求

永久重定向

从上面整理的表格可以知道,301 和 308 状态码都属于永久重定向。正如字面意思,永久重定向代表原来的 URL 资源已经不可用,替换成一个新的 URL 资源。所以当客户端识别到响应头中带有这两个状态码时,会更新原来请求 URL 资源记录。

301 和 308 的主要区别是,重新发起新请求时,301 会发起 GET 请求,而 308 会使用原来的方法发起新的请求。在规范中,其实 301 本来也是不允许新请求改变其请求方法的,但是由于市面上现有的浏览器厂商都使用了 GET 方法来发起新的请求,所以才创建了 308 这个状态码来处理需要使用非 GET 方法进行重定向的场景。

临时重定向

302、303、307 都属于临时重定向。当原来的 URL 资源因为某些不可预测的因素导致临时无法访问时,可以通过临时重定向将请求转移到另外一个资源。由于重定向的资源是临时的,因此客户端不会将这个临时的资源缓存至本地,在下一次发起请求时依旧会使用原来的资源。

如果在资源访问时,服务方想提供一些临时的展示页,通常可以使用 303 进行临时重定向。

302 与 307 的关系与永久重定向中的 301 与 308 的关系类似,这里就不再赘述。

其他重定向方式

在生产中常用的几种重定向,其作用优先级跟我们访问资源时文件的请求处理顺序基本一致,即

HTTP > HTML > JavaScript

上面提到的重定向方式,都是通过在响应体头部的 Location 字段指定新的 URL 资源实现的,但是这个操作只能是由服务端控制的,属于 HTTP 的协议范畴。在不方便控制服务端的场景下,还可以通过 HTML 的 <meta> 标签进行 HTML 重定向,或者 DOM 实现 JavaScript重定向。

HTML 重定向

在 HTML 文件中,通过 <meta> 标签进行指定:

<head>
	<meta http-equiv="Refresh" content="0; URL=https://domain.com/index_new"/>
</head>

http-equiv="Refresh" 指定启动重定向,content 后面的数字表示执行重定向的等待时间,单位为秒;后面的 URL 则指定重定向的资源链接。

JavaScript 重定向

这个比较常见,通过指定 window.location 即可实现重定向,这里不再展开。

常见的重定向场景

1、保证原有链接可用

由于网站的维护或者链接的调整,服务器内部的 URL 可能出现变更,但为了保证已经被外部引用的链接以及用户收藏的书签依然可用,这里可以使用重定向。

2、提高网站的可达率

有时候用户访问一个 URL 时,不一定能准确记住完整的链接,针对同一个网站的不同别名,分别使其重定向至该网站的指定 URL,能有效提升用户访问的可达率。比如 www.baidu.combaidu.com 都能访问到百度的页面。

3、强制跳转 HTTPS

当页面支持 HTTPS 时,如果用户通过 HTTP 协议进行访问,那么服务端通常会强制指定重定向跳转进行 HTTPS 访问。需要注意的是,POST 请求经过 301 和 302 重定向后,会重新以 GET 方法进行请求,此时表单内的请求参数会丢失,可能会导致请求失败,这在服务器开发过程中尤其需要注意。

4、避免页面重复提交

对于像编辑、删除等提交表单的操作,我们需要避免用户通过刷新页面进行重复提交,因此可以将其重定向到临时的进度展示页,比如 303。对于响应时间较长的页面请求也可以这么处理。这样,用户能够感知到操作已经在执行,即便进行刷新或者重新访问,也不会重复触发提交的操作。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机网络安全维护目的全文共2页,当前为第1页。计算机网络安全维护目的全文共2页,当前为第1页。计算机网络安全维护目的 计算机网络安全维护目的全文共2页,当前为第1页。 计算机网络安全维护目的全文共2页,当前为第1页。 网络的安全是指通过采用各种技术和管理措施,使网络系统正常运行,从而确保网络数据的可用性、完整性和保密性。网络安全的具体含义会随着"角度"的变化而变化。比如:从用户个人、企业等的角度来说,他们希望涉及个人隐私或商业利益的信息在网络上传输时受到机密性、完整性和真实性的保护。而从企业的角度来说,最重要的就是内部信息上的安全加密以及保护。 维护计算机网络安全的目的: 保护计算机、网络系统的硬件、软件及其系统中的数据,使之不因偶然的或者恶意的原因而遭到破坏、更改、泄露,确保系统能连续可靠正常地运行,使网络服务不中断。 之所以提出网络安全,缘于网络攻击的普遍,现在的互联网存在很多安全威胁。线面给你介绍点儿网络安全威胁,希望可以可以帮助你更好地理解网络安全与维护的目的。 网络安全攻击会在它们的复杂性和威胁水平上具有不同程度的改变,这也是网络安全的复杂性之根本。一些常见的攻 :应用层攻击:这些攻击通常瞄准运行在服务器上的软件漏洞,而这些漏洞都是很熟知的。各种目标包括FTP,发送邮件,HTTP。 Autorooters:恶意者使用某种叫做rootkit的东西探测,扫描并从目标主机上捕获数据,使得用户数据变得透明,它可以监视着整个系统。后门程序:通往一个计算机或网络的简洁的路径。经过简单入侵或是精心设计的木马,恶意者可使用植入攻击进入一台指定的主机或是一个网络。 DoS和DDoS攻击:最常见的网络攻击,却形式多样,而且非常让人厌烦。 IP欺骗:黑客以你的内部网络可信地址范围中的IP地址呈现或者使用一个核准的,可信的外部IP地址,来伪装成一台可信的主机。中间人攻击:简单说就是使用工具拦截你要发送的数据。网络侦查:针对待攻击的网络收集相关的信息,做更深入的了解,便于实施攻击。包嗅探:他通过网络适配卡开始工作与混杂模式,它发送的所有包都可以被一个特殊的应用程序从网络物理层获取,并进行查看积分类。 口令攻击:通过多种方式发现用户口令,伪装成合法用户,访问用户的特许操作及资源。强暴攻击:是一种面向软件的攻击。 端口重定向攻击:这种方法要求黑客已经侵入主机,并经由防火墙得到被改变的流量。 病毒攻击:常见,难防。时效性。信任利用攻击:这种攻击发生在内网之中,有某些人利用内网中的可信关系来实施。 计算机网络安全维护目的全文共2页,当前为第2页。计算机网络安全维护目的全文共2页,当前为第2页。 综上所述,简单来说,正是由于各种网络威胁的盛行,才使得网络安全与维护显得尤为重要。 计算机网络安全维护目的全文共2页,当前为第2页。 计算机网络安全维护目的全文共2页,当前为第2页。 感谢您的阅读,祝您生活愉快。 计算机网络安全维护目的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值