规定了客户端和服务端交流时的数据格式
HTTP1.0:
运行方式:一个连接发送一个请求
HTTP1.1:一个连接发送多个请求
1.请求和响应都由三部分组成(行和头的信息是浏览器组织成这种格式发送到服务端的,有服务端组织格式发送到客户端,我们只写了正文里的东西)
请求信息(3部分组成): (可以理解为就是想向服务器发送这些东西)(服务器可以解析,然后提取东西给浏览器响应)
1)请求行 (由3部分组成)
a) 请求的方式:常见的是get和post方式
lGET方式•如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:•GET /mail/1.html?name=abc&password=xyz HTTP/1.1•GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。lPOST方式•如请求方式为POST方式,则可以在请求的正文内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。
b) 请求的资源地址:app/a.html
c) 请求协议:http1.1
2)请求头信息(2部分组成)(键值对)
a)头名称:一般首字母大写
b)头值:
3)请求正文 (只有请求的类型是post才会有) (请求参数):把客户端所填写的请求的信息提交给服务端(服务端通过请求对象拿取信息)
响应信息:(3部分组成)(服务器回回来的东西)(控制头控制浏览器的怎么做)
1)响应行(由3部分组成)
a) 响应协议
b) 状态码
l状态码用于表示服务器对请求的各种不同处理结果和状态,它是一个三位的十进制数。响应状态码分为5类,使用最高位为1到5来进行分类如下所示:![]()
c) 状态信息
2) 响应头信息(2部分):
a): 响应头
b): 头值
3) 响应正文:服务端发送给客户端的html源代码(客户端通过浏览器解析再把数据显示在页面中)
1.get方式请求参数会附加在url后,而post是看不到的,post相对安全
2.get方式对提交的数据大小有限制(1k),post方式对数据大小没有限制.
200:服务端对客户端正常响应
•表示一切正常,返回的是正常请求结果
302(307): 请求重定向
指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出
304: 未修改 (页面在服务器没有修改过)
•表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求 。
404:找不到
• 服务器上不存在客户机所请求的资源。
500:代码错误
•服务器端的程序发生错误
在地址栏输入网址后:
回车:Cache 把请求提交一遍(在浏览器的缓存中取)
点击右边的刷新按钮:304 把刚才的请求再提交一遍(先去到服务器,服务器判断该页面有没有修改,如果没有,再通知客户端从浏览器的缓存中取)
键盘ctrl+F5:200 一定要去到服务器取,不管有没有缓存,服务器再发送一遍数据到客户端
* Accept: 浏览器告诉服务端, 浏览器可接受的MIME类型
MIME类型:相当于操作系统下的文件类型。
是由大类型和小类型组成: text/html;
对应的关系在conf/web.xml中查询
Accept-Charset: 浏览器告诉服务端, 浏览器支持哪种字符集
Accept-Encoding: 浏览器告诉服务端, 浏览器能够进行解码的数据编码方式,比如gzip
Accept-Language: 浏览器告诉服务端,浏览器支持的语言种类
Host: 浏览器告诉服务端,浏览器所在的主机
* Referer: 浏览器告诉服务端,当前页面从哪里来的。就是上一个页面
用处:
1. 用来记录广告的信息
2. 防盗链
Content-Type: 浏览器告诉服务端 ,内容类型 If-Modified-Since: 浏览器告诉服务端
Content-Length: 浏览器告诉服务端请求正文内容长度
Connection: 浏览器告诉服务端
****Cookie: 浏览器告诉服务端 ,浏览器携带的Cookie
Date: 浏览器告诉服务端,发送请求的时间
* Location : 服务端用来告诉浏览器,请求需要重定向.(必须结合状态吗302使用)
Server : 服务端用来告诉浏览器,服务器的类型
* Content-Encoding: 服务端用来告诉浏览器,服务器对数据采用的编码(主要是指压缩的格式)
Content-Length: 服务端用来告诉浏览器,响应正文的长度
Content-Language: 服务端用来告诉浏览器,zh-cn服务发送的文本的语言
*Content-Type: 服务端用来告诉浏览器,你要用哪个码表来解析二进制数据
* Last-Modified : 服务端用来告诉浏览器,访问资源的最后修改时间
*Refresh:服务端用来告诉浏览器,多长时间刷新一次
*Content-Disposition: 服务端用来告诉浏览器,以下载文件的方式打开文件
* Expires: -1 : 服务端用来告诉浏览器,不要缓存 Cache-Control:no-cache (1.1) Pragma: no-cache (1.0)
***** Set-Cookie: 服务端用来告诉浏览器,要存储的内容