首页 > WEB开发 > 后台开发 > HTTP协议
2014
08-10

HTTP协议

1、概述

WEB浏览器与WEB服务器之间一问一答(请求、响应)的交互过程必须遵循一定的规则,这个规则就是HTTP协议。它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。HTTP协议的版本:

1)HTTP1.0:每次发出请求都要建立网络连接

2)HTTP1.1:(☆)在一次网络连接(TCP连接)上可以发出多次请求和得到多次响应,工作过程如下图所示:

 05. HTTP协议211

注:浏览器遇到以下标记时,会自动发出请求:

05. HTTP协议235

2、HTTP协议的组成

1)请求部分

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:

一个请求行、若干消息头、以及请求正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开,如下图所示:

05. HTTP协议381

2)响应部分

一个HTTP响应代表服务器向客户端回送的数据,一个完整的HTTP响应包括如下内容:

一个状态行、若干消息头、以及响应正文,其中的一些消息头和正文都是可选的,消息头和正文内容之间要用空行隔开,如下图所示:

05. HTTP协议494

3、请求部分详解

1)请求消息行

① 格式:(请求方式 请求资源的URI) (HTTP版本号)如:GET /app1/1.html HTTP1.1

② 请求方式(GET | POST):

这两种方式都用于向服务器请求某个WEB资源,区别主要表现在数据传递上。

GET方式:在请求的URI地址后以 ? 的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1。

POST方式:在请求的正文内容中向服务器发送数据,Post方式的特点:传送的数据量无限制,如请求正文为:name=abc&password=xyz

③ URL和URI

URL:协议+主机:端口+资源地址,如:http://localhost:8080/app1/1.html

URI:请求的资源地址,如上面请求消息行中的/app1/1.html

2)请求消息头(☆)

请求头字段即客户端在请求消息中向服务器传递的附加信息。

消息头字段名是不区分大小写的,但习惯上将每个单词的第一个字母大写,下面是常用的请求消息头:

Accept:浏览器可接受的MIME类型。

Accept-Encoding:浏览器可接受的压缩编码,网络传输中的压缩编码通常为gzip。

Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面,即来源URL。Referer的应用:统计广告效果;防止盗链(如qq空间的图片在其他网站会显示不出来)

Content-Type:告知服务器,请求正文的MIME类型,默认类型为application/x-www-form-urlencoded(<form>标签enctype属性的默认值),该类型的值的形式如:username=abc&password=123。另外文件上传时用的MIME类型为multipart/form-data。

If-Modified-Since:告知服务器,当前访问的资源在缓存中的最后修改时间。

Cookie:(☆)与会话管理有关,非非常重要。

3)请求正文

只有请求方式为POST类型时,才有请求正文(如:username=abc&password=123)。要想数据能够正确的提交到服务器,表单的输入域必须要有name属性值。

4)补充:MIME类型

在文件系统,可通过文件的扩展名区分不同的文件(如.txt代表文本文件……),在网络上传输的文件也有自己的类型表示,这种表示方法就是MIME类型,值的写法为:大类型/小类型,如txt—>text/plain表示纯文本类型,html—->text/html表示html类型 (具体对应关系参考:conf\web.xml)

4、响应部分详解

1)响应消息行

① 格式:(HTTP版本号)(状态码 状态描述)

② 常用状态码:

200(正常):一切正常

302、307(临时重定向):表示请求的资源位置已经改变,通过Location响应头指出新的资源的位置。

304(未修改):表示客户端缓存中的版本是最新的,客户机可以继续使用它,无需到服务器请求。

404(找不到)、500(服务器内部错误)

2)响应消息头

响应头字段用于向客户端传递附加信息。下面是常用的响应消息头:

Location:用于重定向,表示新的资源的位置。

Content-Encoding:告知客户端,响应正文使用的压缩编码(如gzip)

Content-Type:告知客户端响应正文的MIME类型,默认类型为text/html。

Refresh:指示客户端刷新频率,单位为秒。

Content-Disposition:指示客户端用下载的方式打开(如attachment; filename=aaa.zip)

Set-Cookie:(☆)与会话管理有关

以下三个响应头一起用,可禁止浏览器缓存:

Expires:-1

Cache-Control:no-cache (HTTP1.1中的)

Pragma:nocache (HTTP1.0中的)

3)响应正文

浏览器解析的正文内容,同右键查看的源代码内容一样。


HTTP协议》有 1 条评论

留下一个回复

你的email不会被公开。