通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
1.http请求(Method Request-URI HTTP-Version CRLF)
请求行
GET/form.html http/1.1(crlf)
POST
HEAD(消息报头)
POST /reg.jsp http/1.1(crlf)
消息报头
(crlf)回车换行
form数据
典型的请求消息:
GET http://download.microtool.de:80/somedata.exe
Host:download.microtool.de
Accept:*/*
Pragma:no-cache
Cache-Control:no-cache
Referer:http://download.microtool.de/
User-Agent:Mozilla/4.04[en](Win95;I;Nav)
Range:bytes=554554-
2.http响应(HTTP-Version Status-Code Reason-Phrase CRLF)
状态行,消息报头,(ctlf)响应正文
典型的响应消息:
HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:"a030f020ac7c01:1e9f"
Content-length:39725426
Content-range:bytes554554-40279979/40279980
HTTP/1.1 200 OK (CRLF)
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
5xx:服务端错误,服务器不能正确执行一个正确的请求
3.消息报头()
分类:普通报头、请求报头,响应报头,实体报头
名字+“:”+空格+值
普通报头:Cache-Control:no-cache
Pragma:no-cache
response.setHeader
请求报头:accept:image/gif text/html
Accept-Charset:gb2312
Accept-Encoding:gzip
Accept-Language:zh_cn
Authorization(401)
Host:www.sunxin.org:8080
User-Agent
响应报头:Location:http://www.sunxin.org
Server:Apache-Coy
www-authenticate:basic realm="basic auth test!"
实体报头:Content-Encoding:gzip
Content-Language:da
Content-Length:
Content-Type:text/html;charset=iso-8859-1
last-Modified:
Expires:过期时间日期
response.setDateHeader("Expires",0);浏览器不要缓存页面。
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
HTTP报文共有两种通用类型:请求报文,响应报文。
(1)请求报文:包括请求行、首部,以及有时出现的主体。如图
请求行 |
首部 |
空行 |
主体 |
请求行:包括请求类型、空格、URL、空格以及HTTP版本。
请求类型 | 空 | URL | 空 | HTTP版本 |
请求类型:此字段定义了几种不同方法的报文。
常用的几种方法:
1:GET:客户要从服务器读取文档时使用。
2:HEAD:当客户想得到关于文档的某些信息但并不是要这个文档时使用。
3:POST:当客户要给服务器提供某些信息时使用。
|