http协议
- 超文本传输协议
- 传输客户端和服务器端
- 定义了浏览器和万维网服务器之间互相通信的规则
- 客户端发送的称为请求报文
- 服务器发送的称为响应报文
会话方式
- 四步骤
- 建立连接
- 发出请求信息
- 回送响应信息
- 关闭连接
- 连接过程短暂,每次请求只处理一个请求和响应,对每个页面的访问,浏览器和web器都建立单独的连接
- 浏览器到web服务器之间的所有通讯都是完全独立分开的请求和相应对
1.0和1.1的区别
- 1.0下载图片会产生新的连接
- 1.1允许下载所有资源再断开连接,提高效率
httpwatch
- ie8以下没有提供监听http的功能,使用httpwatch即可
报文
- 格式
- 首部
- 空行
- 报文主体
- 请求报文
- 请求首行(请求行)
- 请求头信息(请求头)
- 空行
- 请求体
- get请求没有请求体
- post把表单数据放到请求体中
GET /Hello/index.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=C55836CDA892D9124C03CF8FE8311B15
POST /Hello/target.html HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/Hello/
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 14
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=774DA38C1B78AE288610D77621590345
username=admin
响应报文
-
组成
-响应首行(响应行);
-响应头信息(响应头);
-空行;
-响应体; -
响应码
-
响应码对浏览器来说很重要,它告诉浏览器响应的结果;
- 200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
- 404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;
- 500:请求资源找到了,但服务器内部出现了错误;
- 302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 274
Date: Tue, 07 Apr 2015 10:08:26 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Hello</h1>
</body>
</html>
//HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功;
//Server: Apache-Coyote/1.1:服务器的版本信息;
//Content-Type: text/html;charset=UTF-8:响应体使用的编码为UTF-8;
//Content-Length: 274:响应体为274字节;
//Date: Tue, 07 Apr 2015 10:08:26 GMT:响应的时间,这可能会有8小时的时区差;