HTTP请求流程基础知识
Posted happystudyhuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP请求流程基础知识相关的知识,希望对你有一定的参考价值。
HTTP协议解析:
HTTP即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将html文档从WEB服务器传输到WEB浏览器。
URL(统一资源定位符)也被称为网页地址,是互联网标准的地址。
URL的标准格式如下:
协议://服务器IP【:端口】/路径/【?查询】
浏览器可以发起HTTP请求,也可以借助其他工具发起HTTP请求,例如,linux系统的curl命令
HTTP协议目前最新版本是1.1,HTTP是一种无状态的协议。无状态是指WEB浏览器与WEB服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器发出请求,然后WEB服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。
1.HTTP请求
HTTP请求包括三部分,分别是请求行(请求方法)、请求头(消息报头)和请求正文。
POST/login.php HTTP/1.1 //请求行
HOST:www.test.com //请求头
User-Agent:Mozilla/5.0(windows NT6.1;rv:15.0)Gecko/20100101 firefox/15.0
//空白行,代表请求头结束
Username=admin&password=admin //请求正文
2.HTTP响应
与HTTP请求对应的是HTTP响应,HTTP响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)。
HTTP/1.1 200 OK //响应行
Date:Thu,28Feb 2018 01:23:37 GMT //响应头
//空白行,代表响应头结束
<html> //响应正文或者叫消息主题
请求方法(所有方法全为大写)有多种,各个方法的解释如下:
GET :请求Request-URL所标识的资源
POST:在Request-URL所标识的资源后附加新的数据
HEAD:请求获取由Request-URL所标识的资源的响应消息报头
PUT:请求服务器存储一个资源,并用Request-URL作为其标识
DELETE:请求服务器删除Request-URL所标识的资源
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
HTTP状态码:
当客户端发起HTTP请求,服务器端接收后,会向客户端发送响应信息,其中,HTTP响应中的第一行中,最重要的一点就是HTTP状态码。
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码、状态描述、说明:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP消息
HTTP消息又称HTTP头(HTTP header),由四部分组成,分别是请求头、响应头、普通头和实体头。
1>请求头
请求头只出现在HTTP请求中,请求报头允许客户端向服务器端传递请求的附加信息和客户端自身 的信息。常用的HTTP请求头如下:
HOST:主要用于指定被请求资源的Internet主机和端口号,例如:host:www.test.com:8080
User-agent:允许客户端将它的操作系统、浏览器和其他属性告诉服务器
Referer:代表当前访问URL的上一个URL,简单的说,用户是从什么地方来到本页面
Cookie:它是一段文本,常用来表示请求者身份等
Range:多线程下载一定会用到此请求头
X-forward-for:它代表请求端的IP,可以有多个,中间以逗号隔开
Accept:用于指定客户端接收那些MIME类型的信息,如Accept:text/html,表明客户端希望接收html文本
Accept-Charset:用于指定客户端接收的字符集(告诉服务器能够发送哪些字符集)
2>响应头:是服务器根据请求向客户端发送的HTTP头
1.Server:服务器所使用的WEB服务器名称。避免攻击者探测可以修改此头的信息
2.Set-Cookie:向客服端设置Cookie,通过查看此头,可以清楚地看到服务器向客户端发起的Cookie信息
3.Last-Modified:服务器通过这个头告诉浏览器,资源的最后修改时间
4.Location:服务器通过这个头告诉浏览器去访问哪个页面,浏览器接收到这个请求之后,通常会立刻访问Location头所指的页面,这个头通常配合302状态码使用
5.Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器
3>普通头
在普通报头中,在少数报头域用于所有的请求和响应消息,但并不用于被传输的实体,只用于传输的消息
4>实体头
请求和响应消息都可以传送一个实体。实体头定义了关于实体正文和请求所标识的资源的元信息。元信息也就是实体内容的属性,包括实体信息类型、长度、压缩方法、最后一次修改时间等。常见的实体头如下:
Content-Type:实体报头域用于指明发送者的实体正文的媒体类型
Content-length:实体报头域用于指明实体正文的长度,以字节方式存储的十进制数字来表示
Last-Modified:实体报头域用于指示资源的最后修改日期和时间
HTTP协议与HTTPS协议的区别:
HTTPS协议它是以安全为目标的HTTP通道,其实就是HTTP的升级版本,只是它比单纯的HTTP协议更加安全。
HTTPS的安全基础是SSL,既在HTTP下加入SSL层。也就是HTTPS通过安全传输机制进行传送数据,这种机制可保护网络传送的所有数据的隐秘性和完整性,可以降低非入侵性拦截攻击的可能性。
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者80,后者443
4、http的连接很简单,是无状态的:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
HTTPS的优点:
尽管HTTPS并非并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:
1.使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器
2.HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性
3.HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了攻击人的成本
4.谷歌在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”
HTTPS的缺点:
虽说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:
1.HTTPS协议握手阶段比较费时,会时页面的加载时间延长近50%,增加10%到20%的耗电
2.HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响
3.SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不用
4.SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗
5.HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别在某些国家可以控制CA根证书的情况下,中间人攻击一样可行
以上是关于HTTP请求流程基础知识的主要内容,如果未能解决你的问题,请参考以下文章