HTTP协议用于客户端和服务端之间的通信:
客户端与服务端:(请求->处理->响应)
![](https://img.haomeiwen.com/i8917733/0803052dd3a6b237.png)
![](https://img.haomeiwen.com/i8917733/85b4b6d43ea35782.png)
![](https://img.haomeiwen.com/i8917733/af2059b7f03dee5d.png)
请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。
![](https://img.haomeiwen.com/i8917733/69ba10db93c72b1a.png)
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
![](https://img.haomeiwen.com/i8917733/d470828ec16cb5fd.png)
HTTP协议是无状态协议:
![](https://img.haomeiwen.com/i8917733/a93e003f53cb0693.png)
关于这个的理解,大伙可以参考这篇文章:https://www.cnblogs.com/bellkosmos/p/5237146.html
在此提一句web form的viewstate~
参考文章:
https://blog.csdn.net/wait_for_taht_day5/article/details/52960276
https://www.cnblogs.com/wwan/archive/2010/11/18/1880357.html
HTTP方法:
![](https://img.haomeiwen.com/i8917733/ec688ace15048fad.png)
![](https://img.haomeiwen.com/i8917733/653c159b0579ea6e.png)
GET和POST方法的主要区别?
http://www.cnblogs.com/logsharing/p/8448446.html
https://boutell.com/newfaq/misc/urllength.html
POST和PUT的主要区别:(是否幂等)https://www.cnblogs.com/sexintercourse/p/5890603.html
![](https://img.haomeiwen.com/i8917733/9c2547db8107ead7.png)
![](https://img.haomeiwen.com/i8917733/b0b0acbbd25dfbfd.png)
HEAD方法和GET方法一致,除了服务器不能在响应里返回消息主体
参考链接:https://www.jianshu.com/p/1a49a7b08ee0
![](https://img.haomeiwen.com/i8917733/74e9ac47891eb1ba.png)
![](https://img.haomeiwen.com/i8917733/1aad6636d29d15d1.png)
![](https://img.haomeiwen.com/i8917733/073a3f15393a2db8.png)
关于Trace的理解:
https://www.cgisecurity.com/questions/httptrace.shtml
https://www.jianshu.com/p/1a49a7b08ee0
![](https://img.haomeiwen.com/i8917733/2dbf2538d52e5c5a.png)
关于RESTful风格接口的设计:
http://www.ruanyifeng.com/blog/2014/05/restful_api.html
持久连接节省通信量:
HTTP 协议的初始版本中,每进行一次 HTTP 通信就要断开一次 TCP连接
![](https://img.haomeiwen.com/i8917733/e19f47607209092c.png)
缺点:无谓的 TCP 连接建立和断开,增加通信量的开销。
![](https://img.haomeiwen.com/i8917733/0d70a966964e7cd1.png)
![](https://img.haomeiwen.com/i8917733/18c408e67ff3d7c6.png)
在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并未标准化。
管线化:(无需等待请求返回即可发起下一个请求)
![](https://img.haomeiwen.com/i8917733/b4ebbbbe683da5e4.png)
Cookie:
![](https://img.haomeiwen.com/i8917733/5c5cc652f7cd59c8.png)
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
![](https://img.haomeiwen.com/i8917733/c464fa7830024e38.png)
有关cookie和session,可以参考这篇文章:(个人理解,银行的例子)
https://www.jianshu.com/p/6a73b50a2e6b
网友评论