Http协议由Tim Berners-Lee(被称为Web之父)发明。Http协议是完全基于文本的。浏览器通过http协议和服务器交互,默认是80端口。也可以显式的在URL中指出端口号。比如:http://localhost:8080/index.html。Http协议是一种无状态协议,并且不适合实时的获取数据的应用,因为过多实时的客户端和服务端的交互将会导致网络的频繁通信并受到带宽的限制。Http协议也不能告诉服务器客户的请求是如何产生的。这使得B/S比C/S实现上难度较大。
浏览器主要有两种命令和服务器交互,一种叫Get,另一种叫Post。逻辑上看,Get命令相当于读操作,向服务器发出请求,然后获取数据,Post命令向服务器发出执行某个动作的指令,有可能会修改服务器上的某些数据,因此是不可逆的操作。我们要防止用户不断的快速刷新页面引发的Post命令,通常一个提示对话框让用户确认操作是否真的有必要进行是一种常用的方法。
Get命令的格式:请求行,请求首部,请求主体(可选)。
GET /index.html HTTP/1.0
Host: www.gefionsoftware.com
User-Agent: Mozilla/4.5 [en] (WinNT;I)
Accept: image/gif, image/jpeg, image/pjpeg, image/ping,*/*
Accept-Language : en
Accept-Charset : iso-8859-1,*,utf-8
上面的例子里面,第一行是请求行,表明是GET命令,请求的资源是index.html ,协议是HTTP1.0。后面所有的都是请求首部,没有请求主体。
服务器的应答格式:状态行,应答首部,应答主体(可选)。
HTTP/1.0 200 OK
Last-Modified: Mon, 20 Dec 2001:23:26:42 GMT
Date: Tue, 11 Jan 2002 20:52:40 GMT
Status:200
Content-Type: text/html
Servlet-Engine: Tomcat Web Server/4.0.1
Content-Length: 59