一、用于客户端和服务端的通讯html
HTTP协议可以分清哪端是客户端,哪一个是服务端。安全
二、经过请求和响应类达成通讯服务器
确定是先从客户端发出请求,服务端接受到请求后,返回响应。cookie
请求报文
GET src/index.html HTTP/1.1 Host: hark.jp Connection: keep-alive Content-Type: application/x-wwww-form-urlencoded Content-Length: 16 name=meils&id=123456
请求由 请求方法、资源路径URI、HTTP版本、可选的请求首部、内容实体。网络
响应报文
HTTP/1.1 200 OK Data: Tue 10 Jul 2012 Content-Length: 162 Content-Type: text/html <html> ... </html>
三、HTTP是不保存状态的协议app
HTTP是不保存状态的,是无状态的协议,HTTP不会对请求和响应之间的通讯进行保存的。不作持久化处理。学习
这样设计是为了保证可以处理大量的事务,可是随着WEB不断的发展,许多的有状态的需求不断出现,所以最后引入了Cookie技术。url
四、经过URI定位资源spa
GET * HTTP/1.1
GET 获取资源
POST 传输实体主体
PUT 传输文件
容许在请求报文的主体中添加文件内容,而后保存到URI指定的位置。
因为PUT不带有验证机制,存在安全性问题,因此通常不用。设计
HEAD 获取报文首部
HEAD与GET相似,只是不返回报文主体,用于确认URI的有效性及资源更新的日期等。
DELETE 删除文件
与PUT相反,跟它存在由同样的问题,因此通常也不会用
OPTIONS 询问支持的方法
该方法用来查询针对的URI指定的资源的支持方法。
一、最初的版本每次通讯都会断开一次链接
每一次通讯只进行一次HTTP请求和响应。
2. 随着WEB技术的发展,HTTP通讯实现了持久链接
随着WEB技术的发展,一张页面中会包含许多的资源。若是仍是采用以前的那种方案,无疑会加剧服务器的负担,下降效率。
为了解决上述难题,HTTP/1.1提出了持久链接(HTTPkeep-alive)。
持久链接的特色就是,只要任意一端没有提出断开链接,则一致保持链接状态。
可是持久链接仍然存在必定的问题,那就是每一个请求和响应都是单独的,且必须是一个请求收到响应后再发送另外一个请求。为了解决这个问题,就出现了
管线化
。
使用Cookie来进行状态保存。假设一个须要登录验证的页面,若是不对用户的登录状态进行保存,那么每个页面都须要进行一次登录,这将会是一件惹人讨厌的事情。
不能否认,HTTP正是由于这种无状态的特性,才使得它较为轻巧简介,天然也减小了服务器CPU及内存资源的消耗。因此才会再各类场景中被使用。
为了再不破坏HTTP这种不保存状态的特性下,还能使得它可以保持状态,就出现了伟大的Cookie
。
Cookie
技术是经过再请求和响应中写入Cookie信息来控制客户端的状态的。
Cookie会根据服务端返回的响应报文中的一个Set-Cookie
的首部信息,来通知客户端进行保存Cookie。当下次请求的是时候就会将这个Cookie
带上。服务端会检查客户端发来的Cookie,会检查到底是哪一个发来的,而后对比服务器上的记录,最后获得那个状态信息。
GET /reader/ HTTP/1.1 Host: hack.jp // 没有cookie信息哦
// 返回了Cookie值 HTTP/1.1 200 OK Date: Tue, 12... Server: Apache <set-Cookie: sid=221312321321414; path=/; ...>
GET /reader/ HTTP/1.1 Host: hack.jp Cookie: sid=221312321321414
关于Cookie具体的首部信息,以后会详细学习一下啦。未完待续!!加油~~~