规定了浏览器与服务端之间消息传输的数据格式
四大特性:
1:基于请求响应
多次响应,速度很快
2:基于TCP/IP之上的作用于应用层的协议
3:无状态(服务端无法保存用户的状态,一个人来无数次,我都不记得你,就当你是第一次)
每次都认为你是一个新来的
# 所以就有了cookie session来解决这个问题
4:无连接
请求来一次,我就响应一次,之后立马断开连接,两者就没有任何关系了
# websocket 相当于http协议的一个大的补丁,他能支持长连接
数据格式:
请求数据,相应数据,他们的数据格式都一样的
请求数据格式:
请求首行(标识版本,当前请求方式)
请求头(一堆kv键值对)
# 这里有一个空行(这个很重要,它的作用是通过一个空行,告诉服务器请求头部到此为止)
请求体(带的是一些敏感信息:用户名密码什么的)
响应数据格式:
响应首行(标识版本,响应状态码)
响应头(一堆kv键值对)
# 这里有一个空行(这个很重要,它的作用是通过一个空行,告诉服务器请求头部到此为止)
响应体(返回给浏览器页面的数据, 通常都是页面)
请求方式:
1:get
从服务器要资源
例如浏览器窗口中输入baidu.com
2:post
向服务端提交数据
例如:用户登录,提交用户名密码
响应状态码:
# 用一串简单的数字来表示一些复杂的状态或者提示信息
1XX :
服务端成功接收你的数据,正在处理,你可以继续提交额外的数据
2XX :
服务端成功响应你要的数据,(200:请求成功)
3XX :
内部重定向(当你访问一个需要登录才能访问的页面,你就会发现窗口会自动跳到登录界面)
内部判断你有没有登陆,如果没有就把你重定向到登录那边了
301:
302:
4XX :
请求错误
404:
资源不存在
403:
请求不合法,不符合内部规定,权限不够
5XX:
服务器内部错误,(和用户没有任何关系)
500# 就这种类型的