1.简介html
HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。浏览器
HTTP基于TCP/IP通讯协议来传递数据。缓存
HTTP基于客户端/服务端(C/S)架构模型,经过一个可靠的连接来交换信息,是一个无状态的请求/响应协议。服务器
2.特色cookie
(1)HTTP是无链接:无链接的含义是限制每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式能够节省传输时间。session
(2)HTTP是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据均可以经过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。架构
(3)HTTP是无状态:无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送的数据量增大。另外一方面,在服务器不须要先前信息时它的应答就较快。ide
HTTP请求报文网站
HTTP请求报文由3部分组成(请求行+请求头+请求体):
google
请求行:
①是请求方法,GET和POST是最多见的HTTP方法,除此之外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
③是协议名称及版本号。
请求头:
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
与缓存相关的规则信息,均包含在header中
请求体:
⑤是报文体,它将一个页面表单中的组件值经过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体能够传递请求参数,请求URL也能够经过相似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。
HTTP请求报文头属性
Accept
请求报文可经过一个“Accept”报文头属性告诉服务端 客户端接受什么类型的响应。
以下报文头至关于告诉服务端,俺客户端可以接受的响应类型仅为纯文本数据啊,你丫别发其它什么图片啊,视频啊过来,那样我会歇菜的~~~
Accept:text/plain
Accept属性的值能够为一个或多个MIME类型的值(描述消息内容类型的因特网标准, 消息能包含文本、图像、音频、视频以及其余应用程序专用的数据)
cookie
客户端的Cookie就是经过这个报文头属性传给服务端的哦!以下所示:
Cookie: $Version=1; Skin=new;jsessionid=5F4771183629C9834F8382E23
服务端是怎么知道客户端的多个请求是隶属于一个Session呢?注意到后台的那个jsessionid = 5F4771183629C9834F8382E23木有?原来就是经过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(固然也能够经过重写URL的方式将会话ID附带在每一个URL的后面哦)。
Referer
表示这个请求是从哪一个URL过来的,假如你经过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的Referer报文头属性值就是http://www.google.com。
Cache-Control
对缓存进行控制,如一个请求但愿响应返回的内容在客户端要被缓存一年,或不但愿被缓存就能够经过这个报文头达到目的。
HTTP的响应报文也由三部分组成(响应行+响应头+响应体)
①报文协议及版本;
②状态码及状态描述;
响应头:
③响应报文头,也是由多个属性组成;
响应体:
④响应报文体,即咱们真正要的“干货”
和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。
HTTP的响应状态码由5段组成: