最近在看《图解HTTP》这本书,内容很基础,也很简单。一起买来的《HTTP权威指南》相对来说就太“权威”了。接下来会对书中的内容或者个人认为的疑点进行一下总结。
301 、302是什么?
301、302等状态码是响应报文中状态行中的组成部分。状态码(Status Code)的职责是当客户端向服务器发送请求时,描述返回的请求结果。
标准状态码由3位数字和原因短语组成,主要包含5类:
类别 | 原因短语 | |
---|---|---|
1XX | Informational(信息性状态码) | 接受的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
301、302代表了什么?
-
301 Moved Permanently:永久性重定向。
表示请求的资源已被永久分配了新的URI。可以简单理解为该资源已经被永久改变了位置。 -
302 Found:临时性重定向。
表示资源被临时改变位置并分配了新的URI。
两种重定向之后的URI会包含在响应头中Location
首部字段中。
301、302区别
301永久重定向使得搜索引擎在抓取新内容的同时将旧的网址替换为重定向后的网址。而302临时性定向使得搜索引擎会抓去新的内容却保留旧的网址。
301、302适用场景
301:域名切换
、HTTP迁移到HTTPS
302:未登录用户访问个人中心时重定向到登录页面
、404页面提示后跳转到首页
302与网址劫持
网址劫持和302重定向有什么关系呢?这个要从搜索引擎如何处理302重定向说起。
当从网址A做一个302重定向到网址B时,服务器隐含的意思是网址A可能会重新启用。正常情况,大部分搜索引擎应当去抓取302重定向之后的网址B。但是可能由于B网址相对于A网址过于复杂,这样搜索引擎就会觉得网址A对用户更加友好,因而在重定向之后任然显示旧的网址A,但是显示网址B的内容。这就是网址劫持。
在平常使用手机的过程当中,有时候会发现网页上会有浮动的窗口,或者访问的页面不是正常的页面,这就可能是运营商通过某种方式篡改了用户正常访问的页面。其中有一种方式就是通过返回302重定向让用户浏览器跳转到另外的网址。