HTTP 协议
HTTP:超文本传输协议,详细的规定了浏览器和服务器之间进行通信的规则,通过网络传输HTML文档数据的协议
HTTP协议是一个应用层的协议,由请求和响应构成,一次请求一次响应.
HTTP协议有这几个特点
- 是我们B/S 架构采用的协议
- HTTP可以传输任意数据类型,比如文本,图片,音频,视频等等
- HTTP1.0之前使用的是种短连接的方式;
短连接
短连接:就是限制每次连接只处理一个请求,服务器处理完成之后,并收到浏览器的应答之后.就会断开连接.这种方式的好处是可以节省传输时间.但是缺点是,我请求了一个HTML文档,这个文档中又包含了,其他JS文件,图片文件,CSS文件,每当浏览器,遇这样一个Web资源,就会建立一个会话,那这样的话需要消耗资源和时间的.
现在我们使用的HTTP1.1的版本使用的是长连接.
长连接
长连接:使用长连接的情况下,当一个网页打开完成后,客户端和服务端之间传输数据时,连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立好的连接.当然,这个连接不会永久保持,服务器中可以设置这个保持连接时间.
- HTTP协议是一种无状态协议;
协议的状态:
协议的状态:就是指下一次传输可以记住本次传输数据的能力,那所谓无状态协议,就是http不会为了下一次连接,而维护本次连接所传输的数据,比如浏览器打开一个网页后,关闭浏览器,然后再次打开浏览器,但是服务器并不知道客户关闭了一次浏览器,所以HTTP是无状态协议,那如果说我们在一个网站中的多个页面间需要共享同一个数据,我们可以通过Cookie和Session来实现.
HTTP 之 请求 Request
所谓请求:就是浏览器往服务器发送数据
请求:
请求行:请求信息的第一行
请求头:从请求信息的第二行开始到请求空行结束
请求体:从请求空行往下
请求行:GET /HTTPTest/login?username=zhangsan&password=123456 HTTP/1.1
格式: 请求方式 /请求的资源?请求参数 协议/版本
请求方式常见的 get post
get:会把请求参数拼接在URL后面,数据大小有限制,get请求没有请求体
post:请求会将请求参数放到请求体里面,数据大小无限制
请求头: 格式 key:value,value
常见的请求头:
Accept: text/html,image/* --告诉服务器当前客户端可以接收的文档的类型。其实这里包含了*/*,就表示什么都可以接收; 大类型/小类型 比如 text/css text/javascript
Accept-Charset: ISO-8859-1 --告诉服务器,客户端提交的表单可能使用的编码类型
Accept-Encoding: gzip --浏览器发给服务器,声明浏览器支持的编码类型
Accept-Language:zh-cn --语言环境
Host: localhost:8080 --访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:
后面跟的时间是本地浏览器存储的文件修改时间
Referer: http://www.baidu.com/index.jsp --来自哪个页面、防盗链
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie
Connection:Keep-Alive --链接状态 长链接
Date: Tue, 11 Jul 2000 18:23:51 GMT --时间
HTTP 之 响应 Response
所谓响应:就是服务器往浏览器回写数据
响应:
响应行:响应信息第一行
HTTP/1.1 200 OK 格式: 协议/版本 响应状态码 响应的描述
常见的响应状态码
200
404
302
500
响应头:响应信息第二行到响应空行
响应体:响应空行以下
常见的响应头
Location: http://www.baidu.org/index.jsp --跳转方向 302重定向
Server:apache tomcat --服务器型号
Content-Encoding: gzip --数据压缩
Content-Length: 80 --数据长度
Content-Language: zh-cn --语言环境
Content-Type: text/html; charset=GB2312 --告诉浏览器,服务器返回的文本采用什么编码
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,
Refresh: 1;url=http://www.hehe.org --定时刷新
Content-Disposition: attachment; filename=aaa.zip --下载
Set-Cookie:SS=Q0=5Lb_nQ; path=/search 让浏览器将数据保存到本地
Expires: -1 --缓存 -1 就是让页面立即过期
Cache-Control: no-cache --浏览器和缓存服务器都不应该缓存页面信息强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验
Connection: Keep-Alive --保持连接 长链接
Date: Tue, 11 Jul 2000 18:23:51 GMT