- 通信:HTTP协议用于客户端和服务器端之间的通信。请求访问资源的为客户端,提供资源响应的是服务器端。应用HTTP协议时,必定是一端为客户端,一端为服务端角色。规定:请求从客户端发出,由服务端响应请求并返回结果。也就是说,请求一定是从客户端开始建立通信。
- 不保存状态的HTTP:HTTP是一种不保存状态,即无状态(stateless)协议。它不会对请求和响应之间的通信状态进行保存,协议对已发送过的请求和响应都不做持久化处理。
- 请求通过URI定位资源:客户端发送请求请求特定资源时需要将URI包含在请求报文中,请求的方法有很多:GET,POST,在后面会提及。另外,可以对服务器本身发起请求,用一个*替代URI,这样的做法是查询HTTP服务端支持的HTTP方法种类
- HTTP请求方法:请求特定URI时,方法的作用在于指定请求的资源能按照我们的期望产生某种行为,有:
GET请求资源,POST传输实体主体,PUT传输文件,HEAD获得报文首部,DELETE删除文件,OPTION询问支持方法,TRACE追踪路径,CONNECT要求使用隧道协议连接代理 - HTTP的持久连接 HTTP keep-alive:HTTP一开始的设计是每进行一次通信过后都要断开一次再重新连接造成通信量开销。持久连接:只要任意一段不断开连接就保持TCP连接状态。好处在于:减少了重复建立和断开的通信量开销。
- HTTP管线化(pipelining):在持久连接的基础上,实现了不用等待响应也可以直接发送下一个请求,这样就相当并发多个请求。原因就在于客户端和服务端之间未曾断掉通信。
- HTTP下使用Cookies技术:由于HTTP的无状态协议,不对之前的请求和响应保存。所以通信无法根据上一次的状态来进行本次的处理。例子:无法管理登录状态,从一个页面跳转另一个页面(同一个站点内)。为了解决这个问题,引入Cookie技术。
-
Cookie技术:通过在请求报文和响应报文中写入cookie信息来控制客户端的状态。
过程:服务端发送的响应报文中含有一个set-cookie首部字段,Cookie会通知客户端保存Cookie。下一次客户端再次往该服务器发送请求时,会自动在请求报文中添加该Cookie值。服务端接收到客户端发来的Cookie,从记录中获得该客户端最后一次的状态信息
归纳总结:
1.HTTP是无状态协议,因此需要Cookie技术。
2.Cookie技术是在服务端和客户端之间的报文中传递
3.HTTP为了提高效率实现了持久连接。在持久连接的基础上,有了HTTP管线化技术。
4.请求方法有很多,各自作用不一样。我们平时主要就用POST,GET。
5.在HTTP协议中,规定请求必须由客户端发出,服务端处理返回结果。