HTTP协议
Hyper Text Transfer Protocal 超文本传输协议。
定义了客户端和服务器端通信时,发送数据的格式。
请求
浏览器(客户端)往服务器发送数据 ---- 请求
请求会携带着请求消息。
响应
服务器往浏览器(客户端)回写 数据---- 响应
响应会携带着响应消息。
这个协议就规定了请求消息和响应消息的格式。
HTTP协议的特点:
1:基于TCP/IP的高级协议,因为TCP是需要三次握手,是安全的协议,HTTP基于TCP,则HTTP也是安全的协议。
2:默认端口号80。
3:基于请求/响应模型,一次响应对应一次请求。
4:无状态协议。每次请求之间相互独立。这些请求之间不能交互数据。
HTTP的历史版本(了解):
1.0版本:一次请求需要一次连接。
1.1版本:复用连接。在一次请求后,客户端和服务器之间的连接不会马上断开,而是等待一段时间,如果一段时间内还有请求,则使用刚才请求的连接。
请求消息数据格式
组成部分:
1:请求行
2:请求头
3:请求空行 : 就是一个空行。分隔请求头和请求体。
4:请求体(又称请求正文)
请求行:请求信息的第一行
格式:请求方式 请求url 协议/版本
例如:GET /day0801/1.html HTTP/1.1
请求方式:
HTTP协议有7种请求方式,常用的有2种。
GET和POST。
GET:
1:请求参数在请求行中,在url后。
Eg:http://localhost:8080/annotationServlet_war_exploded/demo3?username=1
其中的username=1。
2:get会把参数放在url的后面。
3:没有请求体。
4:请求的url长度有限制。
5:不太安全
POST:
1:请求参数在请求体中。
2:post不会将参数放在url的后面。
3:有请求体。
4:请求的url长度没有限制。
6:相对安全
请求头:请求信息的第二行到空行结束
作用:
浏览器告诉服务器一些信息。
格式🔑value (value可以是多个值)
请求头名称 冒号 空格 值
常见的请求头:
Accept: text/html,image/bmp --支持数据类型(服务器返回给浏览器的信息,且浏览器能解析的) text/html text/css text/javascript 大类型/小类型 mime类型。
Accept-Charset: ISO-8859-1 --字符集(accept的主语是浏览器)
Accept-Encoding: gzip --支持压缩
Accept-Language:zh-cn --语言环境
Host: www.itcast.cn:80 --访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT --缓存文件的最后修改时间
Referer:
http://www.itcast.com/index.jsp --来自哪个页面、防盗链(告诉浏览器,我(当前请求)从哪里来)
作用:
1:防盗链
比如我在优酷上看战狼2,点击优酷页面上的战狼2超链接,就可以进入优酷的战狼2视频播放界面。
但是一个别的网站上,也有一个连接,我点击该连接,就可以跳转到优酷的战狼2视频播放界面。
这样就损害了优酷的利益,则需要在优酷的战狼2视频播放界面增加一个判断,就是,跳转过来的页面
reference是否是优酷自己的,若不是,就不让其访问。
2:统计工作:
统计一下大家都是从哪个链接跳转到我这里来的。
User-Agent:(浏览器告诉服务器,我访问你使用的浏览器版本信息)
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
可以在服务器端获取该头的信息,解决浏览器兼容的问题。简单来说,就是服务器根据浏览器不同的类型和版本,返回相对应的信息,使我们使用不同的浏览器所访问资源,得到的内容展示是一样的。
Cookie
Connection:Keep-Alive --链接状态
掌握的头信息:
Referer User-Agent Cookie If-Modified-Since
请求体:空行以下的内容
用来封装POST请求消息的请求参数的。
比如提交表单中填写并提交的参数。
响应:(response)
组成部分:
响应行 响应头 响应体
响应行:响应信息的第一行
格式:协议/版本 状态码 状态码说明
例如:HTTP/1.1 200 OK
状态码:
200 正常响应成功
302 重定向
304 读缓存
404 用户操作资源不存在
500 服务器内部异常
响应头:从响应信息的第二行到空行结束
格式:key/value(value可以是多个值)
常见的头
Location: http://www.it315.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 --最后修改时间
Refresh: 1;url=http://www.it315.org --定时刷新
Content-Disposition: attachment; filename=aaa.zip --下载
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
Expires: -1 --缓存
Cache-Control: no-cache --缓存
Pragma: no-cache --缓存
Connection: Keep-Alive --连接
掌握的头信息
Content-Type Location Last-Modified Refresh Content-Disposition Set-Cookie
响应体:空行以下的内容
页面上展示的内容