一旦建立了 TCP 连接,Web浏览器 就会向 Web服务器 发送请求命令,是一个 ASCII 文本 请求行,后跟0个或多个 HTTP头标,一个空行和实现请求的任意数据。
四个部分:
- 请求方法
- 请求头标
- 空行
- 请求数据
一、请求行
请求行由三个标记组成 :
请求方法 请求URL HTTP版本
中间用空格分开。
例如:
GET lvpin/archive/2007/06/09/1645767.aspx HTTP/1.1
1.1请求方法
HTTP规范定义了8种可能的请求方法:(最常见的就是 GET 和 POST 两种方法)
- GET 检索URI中标识资源的一个简单请求
- HEAD 与GET方法相同,服务器只返回状态行和头标,并不返回请求文档
- POST 服务器接受被写入客户端输出流中的数据的请求
- PUT 服务器保存请求数据作为指定URI新内容的请求
- DELETE 服务器删除URI中命名的资源的请求
- OPTIONS 关于服务器支持的请求方法信息的请求
- TRACE Web服务器反馈Http请求和其头标的请求
- CONNECT 已文档化但当前未实现的一个方法,预留做隧道处理
1.2.请求头标:
由key :value 健值组成,每行一对。请求头标 通知服务器有关客户端的功能和标识。
- HOST
请求的哪一个服务器端地址,主地址 ,比如 我现在所在的 CSDN blog.csdn.net/ - User-Agent
用户即客户端可以使用的浏览器 ,如 : Mozilla/4.0 - Accept
即客户端可以接受的 MIME 类型列表,如 image/gif text/html, application/msword
使用 POST 传送数据,最常使用的是Content-Type和Content-Length头标。
- Content-Length
只适用于POST请求,以字节给出POST数据的尺寸
1.3 空行
发送回车符和退行,通知服务器以下不再有头标。
1.4 请求数据
总结以上 我们可以这样写出一个标准的 HTTP请求
POST /lvpin/archive/2007/06/09/1645767.aspx HTTP1.1
HOST: blog.csdn.net/
User-Agent :Mozilla/4.0
Accpt: image/gif,text/html,application/pdf,image/png...
key=value&key=value&key=value.....................................(POST()请求的数据)
服务器端接受请求,处理数据后生成响应返回数据到客户端
二、响应行
一个响应由四个部分组成:
- 状态行
- 响应头标
- 空行
- 响应数据
2.1 状态行:
状态行由三个标记组成:
HTTP版本 响应代码 响应描述
2.2 响应头标:
像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。
Date: Sat, 31 Dec 2005 23:59:59 GMT --响应生成的日期和时间
ContentType: text/html;charset=gb2312’
Content-Length: 122 —响应中的字节数,只在浏览器使用永久(Keep-alive)HTTP连接时需要。
2.3 空行:
最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。
2.4 响应数据:
HTML文档和图像等,也就是HTML本身。