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
待续。。。