0%

网络重定向

1. 什么是网络重定向 what

HTTP重定向(HTTP redirect)就是将各个网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向),也称为URL 重定向、 URL 转发;

常见的HTTP重定向状态码是301(Moved Permanently/永久移动)、302(Found/已定位),差别在于301表示已为目标资源分配了新的永久URI,以后对该资源的任何引用都应使用新的URI,302表示目标资源临时位于其他URI下。由于重定向有时可能会更改,因此客户端应继续将有效请求URI用于将来的请求。

还有其他的重定向相关状态码,如下:

  • 304 Not Modified(未修改)客户的缓存资源是最新的, 要客户端使用缓存
  • 305 Use Proxy(使用代理)必须通过代理访问资源, 代理的地址在Response 的Location中
  • 306 unuse(未使用) 这个状态码当前没使用
  • 307 Temporary Redirect(临时重定向)状态代码指示目标资源临时位于其他URI下,并且如果用户代理执行到该URI的自动重定向,则它不得更改请求方法。由于重定向会随时间变化,因此客户端应继续将原始的有效请求URI用于将来的请求。(不允许将请求方法从POST更改为GET)
  • 308 Permanent Redirect(永久重定向)状态码表示已为目标资源分配了新的永久URI,并且对该资源的任何将来引用都应使用随附的URI中的一个。(不允许将请求方法从POST更改为GET)

我们可以看到307和301,308和302的定义类似,区别在于发生 HTTP 重定向的时候,主要是 httpMethod和httpBody的请求地址发送改变,请求方式(Get、Post)和请求参数(Body)会一起转移,即:发送HTTP重定向时,请求方式和请求体会一并重定向到新地址,而301和302状态可以从Post请求更改为Get请求;

为什么需要网络重定向 why

有两种情况:

一种情况是当实际资源,如单个页面、表单或者整个 Web 应用被迁移到新的 URL 下的时候,保持(原有)链接可用的技术。HTTP 协议提供了一种特殊形式的响应—— HTTP 重定向(HTTP redirects)来执行此类操作,该操作可以应用于多种多样的目标:网站维护期间的临时跳转,网站架构改变后为了保持外部链接继续可用的永久重定向,上传文件时的表示进度的页面,等等。

避免搜索引擎的信息失效,重新抓取;

另一种情况是给同一个资源多个地址;

网络重定向的实现原理

meta javaScript 的重定向

iOS如何实现网络重定向

OC

待续。。。

Swift

待续。。。

参考

iOS中实现url重定向

Alamofire 重定向

状态码 301.302.303.307.308

Redirections