1、概述
HTTP协议是一个基于TCP/IP协议的应用层协议。
它规定了客户端(通常是浏览器)和服务器之间的通信方式。
2、特点
基于请求响应模型
一次请求对应一次响应
请求只能由客户端发出 服务器端被动等待请求做出响应
3、http请求
http请求分为 一个请求行 若干请求头 实体内容
3.1、一个请求行
GET /tieba/1.txt HTTP/1.1
1、请求方式
GET
直接在地址栏中输入地址用GET方式访问服务器
在表单中设置提交方式为GET则用GET方式访问服务器
GET方式提交请求参数,请求参数将会赋值在地址之后传递
请求参数直接拼接在地址后,不安全
传输的数据量有限(4KB,和浏览器相关)
POST
在表单中设置提交方式为POST,则用POST方式访问服务器
post方式提交的请求参数,请求参数不会赋值在地址之后,而是在请求实体内容中传输
请求参数在实体内容中传输,相对安全
传输的数据量没有限制
2、请求的资源地址
表示当前要访问的资源的地址是什么
3、协议版本
当前通讯遵循的协议版本
HTTP主要有1.0 和 1.1两个版本
3.2、若干请求头
请求头有很多种,每个请求头都有各自的意义
Accept: text/html,image/*
– 通知服务器当前浏览器可以接受那些格式的数据
Accept-Charset: ISO-8859-1
– 浏览器可以接受的字符集编码
Accept-Encoding: gzip,compress
– 浏览器可以接受的压缩格式
Accept-Language: en-us,zh-cn
– 浏览器接受的语言环境,和国际化相关的头
Host: www.tedu.cn:80
– 需要访问的虚拟主机的名称
If-Modified-Since: Fri, 17 Feb 2017 18:23:51 GMT
– 这是和缓存机制相关的头
Referer: http://www.tedu.cn/index.jsp
– 这是和防盗链相关的头,对当前资源的访问来自哪个页面的超链接
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
– 客户端的基本信息
Cookie :ss=xx
– 和cookie相关的头
Connection: close/Keep-Alive
– 是否继续保持连接
Date: Fri, 17 Feb 2017 18:23:51 GMT
– 当前发送请求的时间
3.3、一个空行
3.4、实体内容
GET请求实体内容为空
POST请求,请求参数在实体内容种传输
4、http响应
http响应分为 一个状态行 若干响应头 实体内容
4.1、一个状态行
HTTP/1.1 200 OK
1.协议版本
当前通讯遵循的协议版本
HTTP主要有1.0 和 1.1两个版本
2.状态码
是3位的十进制数。
通过不同的状态码表示服务器对请求的不同处理结果。
响应状态码分为5类。
状态码 | |
---|---|
100-199 | 表示接受的请求正在处理 |
200-299 | 表示成功接收请求并已完成整个处理过程,常用200 |
300-399 | 需要进行附加操作以完成请求。例如: 请求的资源已经移动一个新地址,常用302、304和307 |
400-499 | 客户端的请求有错误,常用404 |
500-599 | 服务器端出现错误,常用 500 |
3.状态信息
一个简短的文字描述服务器处理的结果
4.2、若干响应头
Location: http://www.tedu.cn/index.jsp
– 配合302使用实现请求重定向
Server:apache tomcat
– 服务器的基本信息
Content-Encoding: gzip
– 服务器发送的数据使用的压缩格式
Content-Length: 1260
– 服务器发送的数据的大小
Content-Language: zh-cn
–服务器发送的数据使用的语言环境 国际化相关的头
Content-Type: text/html; charset=GB2312
– 服务器发送的数据是什么格式的,如果是字符格式的数据,则还可以通知服务器发送的数据使用的是什么编码,浏览器会根据这个头指定的编码决定使用哪个编码来打开收到的数据
Last-Modified: Fri, 17 Feb 2017 18:24:11 GMT
– 和缓存相关的头
Refresh: 1;url=http://www.tedu.cn
– 定时刷新相关的头,通知浏览器,过几秒后自动刷新访问哪个地址
Content-Disposition: attachment;filename=aaa.zip
– 通知浏览器以附件的形式打开发送过去的数据,是和文件下载相关的头
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
– 和Cookie相关的头
Expires: -1
– 通知浏览器是否缓存
Cache-Control: no-cache
– 通知浏览器是否缓存
Pragma: no-cache
– 通知浏览器是否缓存
–之所以一个功能有三个头,是因为历史原因.所以为了网页的兼容性考虑,通常这三个头要一起使用
Connection: close/Keep-Alive
– 是否保持连接
Date: Fri, 17 Feb 2017 18:24:11 GMT
– 响应时的时间
4.3、一个空行
4.4、实体内容
实体内容中为服务器发送回的内容数据。