HTTP的作用:
HTTP(Hyper Text Transfer Protocol) 超文本传输协议,是基于应用层(TCP/IP参考模型)的通信规范;是从Web服务器传输超文本到客户端的传输协议,无状态的传输协议;不仅能够保证正确、快速、高效的传输超文本文档,而且可以确定资源加载顺序等。
HTTP是不保存状态的协议:
不保存状态的含义就像是,你进入淘宝网站,登入后,每次切换一个页面(就是换一个商品的页面)就要重新登入一次。那就不要太麻烦。那么HTTP是如何解决这个问题的呢?(也不要吐槽HTTP设计的时候为什么没有想到这个,当初的信息量哪有现在这么多,而且HTTP能被许多人接受就是因为他的简单-快)
HTTP1.1 就想到了这个问题,所以设计了Cookie。
当客户端向服务器请求资源的时候,服务器会在HTTP头中接入一个set-cookie项,用来保存这个客户端的身份:
当客户端再次访问服务器的时候就会在请求头中加入一个cookie项,内容就为刚刚服务器发送过来的内容。
HTTP的几种请求方法:
-
GET
用来请求访问已被URI识别的资源,指定的资源经服务器端解析后的响应内容。
-
POST
用来传输实体主体,虽然POST和GET的功能很相似,但是一般不用GET。
-
PUT
传输文件使用的,但是存在漏洞一般web服务器都关闭了这个功能,但是在有的使用REST可能会开放使用
-
HEAD
获取报文头部
-
DELETE
删除文件
-
OPTIONS
用来查询 指定 URI资源 支持的方法
-
TRACW
让web服务器将之前请求通信环,回给客户端的方法。会在请求头中加入Max-Forwards,每经过一个服务器端这个值就减一,但是到0的时候就会停止传输
-
CONNECT
HTTP的管线化:
在最初的HTTP中,每一个资源都要 执行一个完整HTTP请求(包括客户端请求,服务器回应,客户端结束,服务器断开连接)
这样在之前的信息量小的时代可能还行,但是在现在这个大信息时代(每个网页动不动就几十上百张图片,那服务器还不得 累死)
为了解决上述问题,HTTP1.1和一部分1.0想出了持久链接,只要任何一端没有断开链接就保持TCP的状态。
持久链接,使得管线化发送成为可能,即客户端发出一个请求后,不用等待服务端回应即可发送下一个请求。
以上图片内容截取自《HTTP图解》