在学习Web应用程序客户端界面设计时,咱们已经知道组成一个基本的Web应用程序须要Web服务器、Web客户端浏览器、HTTP协议以及静态HTML文件。浏览器
Web服务器:接收客户端请求,而后向客户端返回一些结果;服务器
浏览器:容许用户请求服务器上的某个资源,而且向用户显示请求的结果;网络
HTML:告诉用户浏览器怎么向用户显示内容;学习
HTTP:Web上客户端和服务器之间通讯所用的协议;编码
HTTP是一种超文本传送协议(HyperText Transfer Protocol),是一套计算机在网络中通讯的一种规则。在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层。HTTP是一种无状态的协议(在Web浏览器[客户端]和Web服务器之间不须要创建持久的连接)。整个过程就是当一个客户端向服务器发送一个请求(Request),而后WEB服务器返回一个响应(Response)。以后连接就关闭了。HTTP遵循请求/响应(Request/Response)模型的,全部的通讯交互都被构造在一套请求和响应模型中。
HTTP定义的事务处理由如下四个步骤组成spa
客户端和Web服务器创建连接;设计
客户端发送HTTP请求;3d
服务器端接收客户端的HTTP请求,生成HTTP响应回发;代理
客户端和Web服务器创建连接;blog
一旦创建了TCP连接,Web浏览器就会向Web服务器发送请求命令。HTTP协议未来自于客户端的请求信息封装成HTTP请求,它包括请求行、请求头、消息体以及分隔请求头和消息体的空行;
请求行:请求行是一个ASCII文本行,由三个标记组成:请求的HTTP方法、请求的URL、HTTP版本。中间用空格分开
在HTTP版本1.1中,定义了有八种可能的HTTP请求方法
Ⅰ GET:因为向服务器检索资源;
Ⅱ POST:因为向服务器发送数据,并要求指定的URL处理;
Ⅲ HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档;
Ⅳ PUT:请求服务器保存请求数据做为指定URL新内容;
Ⅴ DELETE:请求服务器删除URL中命名的资源;
Ⅵ OPTIONS:请求关于服务器支持的请求方法信息;
Ⅶ CONNECT:已文档化但当前未实现的一个方法,预留作隧道处理;
在这些方法中,咱们最经常使用的是GET和POST方法,其它几种方法对于Web开发者来讲不是很经常使用。
方法 |
为该方法为该方法的请求 |
POST |
在浏览器地址栏输入URL; |
GETGET |
一般被用于发送私密信息或者大量信息,或者上传文件。若是一个应用程序须要修改数据或者添加数据,而且经过HTTP发送请求,那么就应该使用POST方法。 |
请求头:
HTTP协议使用HTTP头来传递请求的元信息,HTTP头是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP的值。常见的请求头由用户代理资料、能够接受的格式、语言以及内容编码,这些信息用于告诉服务器客户端是什么,客户端想要获得什么格式的回馈信息等。
空行:
发送回车符和退行,通知服务器一下再也不有请求头。
消息体:
HTTP请求中带有查询字符串时,若是是GET方法,查询字符串或表单数据附加在请求行中,那么消息体中就没有内容;若是是POST方法,查询字符串或表单数据就添加在消息体中。
Web服务器解析请求,定位并读取指定的资源。将文件以及其它信息组成HTTP响应返回到客户端。HTTP响应包括:状态行、响应头、消息体以及分隔消息头和响应头的一个空行。
状态行:
每一个HTTP响应以一个状态行开头。状态行由HTTP协议版本、响应状态码和响应描述组成,三者之间用空格分开。
响应状态码是一个三位的数字,它分为如下几个组:
Ⅰ 100~199:信息,请求收到,继续处理;
Ⅱ 200~299:成功,行为被成功地接受、理解和采纳;
Ⅲ 300~399:重定向,为了完成请求,必须进一步执行的动做;
Ⅳ 400~499:客户端错误,请求包含语法错误或者请求没法实现;
Ⅴ 500~599:服务器错误,服务器不能实现一种明显的无效请求;
每个响应状态码都有相关联的字符串响应描述。
响应头:
响应头与请求头同样,也是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。典型的响应头包括内容描述、内容长度、时间邮戳、服务器信息、内容最后更改的时间。这些信息帮助客户端获得发送过来的内容是什么、内容的大小、数据是否比之前一次响应更新。
在响应头中,最重要的HTTP头是Content-Type,它指定MIME类型。MIME类型告诉浏览器要接受的数据是什么类型,这样浏览器才知道如何显示这些数据。这个值一般与HTTP请求头中的Accept相关
空白行:
最后一个响应头以后是一个空行,发送回车符和退行,代表如下再也不有响应头。
消息体:
要发送给客户端的HTML文档或其余要显示的内容等。Web服务器把发送给客户端的文档信息放在消息体中。
HTTP响应到达客户端后,浏览器先解析HTTP响应中的状态行,查看请求是否成功的状态代码。而后解析每个响应头,读取响应消息体,将消息体渲染在浏览器页面上。
一个HTML文档可能包含其它的须要被载入的资源,浏览器会识别,并对这些资源再进行额外的请求,这个过程能够一直循环到全部的数据都按照响应头标中规定的格式恢复到页面中。数据传送完毕,服务器关闭链接,即无状态协议。