一.什么是协议
协议实际上是某些人,或者某些组织提前制定好的一套规范,大家都按照这个规范来,这样可以做到沟通无障碍
二.什么是HTTP协议
HTTP协议是w3c制定的一种超文本传输协议。(通信协议:发送消息的模板提前被制定好了)
w3c:
万维网联盟组织,负责制定标准的:HTTP HTML4.0 HTML5.0 xml dom等规范都是由w3c制定的
三.什么是超文本
超文本说的是:不是普通的文本,比如流媒体:视频,声音,图片等
HTTP支持:不但可以传送普通字符串,同样支持传递声音、视频、图片等流媒体信息
这种协议游走在b和s之间(b:浏览器, s:服务器)。b向s发送数据要遵守HTTP协议。s向b发送数据同样需要遵守HTTP协议。这样b和s才能解耦合
四.什么是解耦合
b不依赖s,s也不依赖b
五:b/s表示:b/s结构的系统(浏览器访问web服务器的系统)
浏览器向web服务器发送数据:叫做请求(request)
web服务器向浏览器发送数据:叫做响应(response)
六.HTTP协议包括:
请求协议:
浏览器向web服务器发送数据的时候,这个发送的数据需要遵守一套标准,这套标准中规定了发送的数据具体格式
响应协议:
web服务器向浏览器发送数据的时候,这个发送的数据需要遵守一套标准,这套标准中规定了发送的数据具体格式
http协议就是提前制定好的一种消息模板
七.http请求协议
http协议包括四个部分:请求行,请求头,空白行,请求体
其中请求行包括三个部分:请求方式,uri,http协议版本号
请求方式
有7种:其中get post 是比较常见的两种,还有delete,put, head, optiions,trace
uri:统一资源标识符。代表网络中某个资源的名字,但是通过uri是不能够定位资源的
url:统一资源定位符。代表网络中某个资源,同时通过url是可以定位到该资源的
url包括uri:例如http://localhost:8080/servlet05/index.html这是url,/servlet05/index.html这是uri
请求头:
请求的主机
主机的端口
浏览器信息
平台信息
cookie信息
空白行:
区分“请求头”和“请求体"
请求体:
向服务器发送的具体信息
八.http响应协议
http响应协议包括四部分:状态行,响应头,空白行,响应体
状态行:
由三个部分组成
第一个部分:协议版本号(如http/1.1)
第二个部分:状态码(http协议中规定的响应状态号,不同的响应结果对应不同的号码)
200表示请求响应成功,正常结束
404表示访问的资源不存在。通常要么是路径写错了,要么是路径写对了,但服
务器中对应的资源没有启动成功
405表示前端发送的请求方式和后端的处理方式不一致
500表示服务器端程序出现了异常。一般会认为是服务器端的错误导致的
第三个部分:状态的描述信息
ok表示正成功结束
not found表示资源找不到
响应行:
响应内容的类型
相应的内容长度
响应的时间
空白行:
用来分离”响应头”和“响应体”
响应体:
响应体就是响应的正文,这些内容是一个长的字符串,这个字符串被浏览器渲染,解释并
执行,最终展示出结果
怎么查看协议内容:
使用chrome浏览器:F12,然后找到network,通过这个面板可以查看协议的具体内容。
九、get请求和post请求有什么区别
get请求发送数据的时候,数据会挂在url的后面,并且在url后面添加一个“?”,“?”后面是数据。这样会导致发送的数据回显在浏览器的地址栏上(get请求在“请求行”上发送数据)
post请求发送数据的时候,是在请求体中发送。不会回显到浏览器的状态栏上。也就是说,post请求发送的数据,在浏览器地址栏是看不到
get请求只能发送普通的字符串,并且发送的字符串长度有限制。不同的浏览器的限制也不同,这个没有明确的规范
get请求无法发送大量数据
post请求可以发送任何类型的数据,包括普通字符串,流媒体等信息:声音,图片,视频
post请求可以发送大量数据,理论上没有长度限制
get请求是安全的,因为get请求只是为了从服务器上获取数据,不会对服务器造成威胁
post请求是危险的,因为post请求是向服务器提交数据,如果这些数据通过后门的方式进入到服务器中,服务器是很危险的。另外post是为了提交数据,所以一般情况下拦截请求的时候,大部分会选择拦截(监听)post请求
get请求有缓存
当发送一个get请求时,浏览器做的第一件事都是从本地浏览器缓存中找,找不到的时候才到服务器中获取。这种缓存机制目的是为了提高用户的体验
post请求没有缓存(post是用来修改服务器端的资源的)
post请求之后,服务器响应的结果不会被浏览器缓存起来,因为这个缓存没有意义
但是,无论是get请求还是post请求,发送的请求数据格式是完全相同的,只不过位置不同,格式都是统一的
-------------------------------------------------------------------------------------------------------------------------------由于本人水平有限,码字比较仓促,有地方表达不清楚的,敬请原谅。