当用户在浏览器中访问某个URL地址、单击网页的某个超链接或者提交网页上的form表单时,浏览器都会向服务器发送请求数据,即HTTP请求消息。
服务器接收到请求数据后,会将处理后的数据回送给客户端,即HTTP响应消息。
HTTP请求消息和HTTP响应消息统称为HTTP消息。
请求消息:在HTTP中,请求消息是由请求行、请求头和实体内容三部分组成。
请求行
HTTP请求行位于请求消息的第一行,它包括三个部分,分别是请求方式、资源路径以及所使用的HTTP版本,具体示例如下:
GET /index.html HTTP/1.1
其中,GET是请求方式,index.html是请求资源路径,HTTP/1.1是协议版本。
注意:请求行中的每个部分需要用空格分隔,最后要以回车换行结束。
在HTTP的请求消息中,请求方式有GET、POST、HEAD等8种。
消息头
在HTTP请求消息中,请求行之后,便是若干请求消息头。
请求消息头主要用于向服务器端传递附加消息,例如,客户端可以接收的数据类型、压缩方法、等信息,具体示例如下:
Host: localhost:8080 Accept: image/gif, image/x-xbitmap Referer: http://localhost:8080/itcast Accept-Language: zh-cn,zh; Accept-Encoding: gzip, deflate Cache-Control: no-cacher
每个请求消息头都是由一个头字段名称和一个值构成,头字段名称和值之间用冒号(:)和空格()分隔,每个请求消息头以一个回车换行符标志结束。
注意:头字段名称不区分大小写,习惯上将单词的第一个字母大写。
响应消息:当服务器收到浏览器的请求后,会回送响应消息给客户端。一个完整的响应消息主要包括响应状态行、响应消息头和实体内容。
响应状态行
HTTP响应状态行位于响应消息的第一行,它包括三个部分:HTTP版本、一个表示成功或错误的整数代码(状态码)和对状态码进行描述的文本信息,具体示例如下:
HTTP/1.1 200 OK
其中HTTP 1.1是通信使用的协议版本,200是状态,OK是状态描述,说明客户端请求成功。
注意:请求行中的每个部分需要用空格分隔,最后要以回车换行结束。
第一个数字有5种可能的取值,具体介绍如下:
1xx: 表示请求已接收,需要继续处理。
2xx: 表示请求已成功被服务器接收、理解并接受。
3xx: 为完成请求,客户端需进一步细化请求。
4xx: 客户端的请求有错误。
5xx: 服务器端出现错误。
响应消息头
位于响应状态行后面,服务器端通过响应消息头向客户端传递附加信息,包括服务程序名、被请求资源需要的认证方式、客户端请求资源的最后修改时间、重定向地址等信息。HTTP响应消息头的具体示例如下:
Server: Apache-Coyote/1.1 Content-Encoding: gzip Content-Length: 80 Content-Language: zh-cn Content-Type: text/html; charset=GB2312 Last-Modified: Mon,18 Nov 2013 18:23:51 GMT