HTTP协议用户客户端和服务端之间的通信
HTTP是不保存状态的,HTTP自身对请求和响应状态不保存。HTTP有新的请求发送时,就会有新的响应产生。HTTP不保存状态是为了尽快的处理大量事物。
有时候我们又需要HTTP保存状态,比如一个购物网页,用户在登陆后我们希望一直保存用户的登陆状态。所以就引入类Cookie技术,这样就可以管理状态类。
GET方法:用来请求访问已经被URI识别的资源。
POST方法:用来传输实体的主体。POST的目的主要不是获取响应体的内容。
PUT方法:用来传输文件。要求在请求报文的主体上包含文件内容,然后保存到请求URI指定的位置。HTTP1.1的PUT方法不带验证机制,任何人都可以上传,存在安全问题。不过可以配合程序的验证机制或者架构设计采用REST就可以用PUT方法。
HEAD方法:返回报文首部。和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性以及资源更新的日期时间等。
DELETE方法:删除文件。因为DELETE和PUT方法一样没有自带验证机制,所以要小心使用。
OPTIONS方法:用来查询针对请求URI指定的资源,服务器支持的访问方法。如支持GET方法。
TRACE方法:追踪路径。客户端通过该方法可以查询发送出去的请求是怎样被加工修改的。因为请求想要连接到源目标服务器可能会通过代理。TRACE方法就是用来确认连接过程中发生的一系列操作。但是一般都不会用。
CONNECT方法:要求用隧道协议连接代理。
HTTP在初始版中,没进行一次通信,就要断开一次TCP连接,随着时代的发展,就很增加通信量的开销。
在HTTP1.1中加入类持久连接(keep-alive)。只要任意一端没有明确提出断开连接,就会保持TCP连接状态。持久连接减少了TCP连接的重复建立和断开所造成的额外开销,减少服务器负担。HTTP1.1中,默认是持久连接。
持久连接是的管线化方式发送成为可能,原来发送请求后需要等待并收到响应才能发送下一个请求。管线化技术出现后,不用等待响应也可以直接发送下一个请求。
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie根据从服务端返回的报文中一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再访问服务端时,就会在请求报文中加入Cookie值后发出去。服务端发现客户端的Cookie后,回去检查是哪一个客户端,然后做出相应的操作。