HTTP协议

目录

一、什么是HTTP协议

二、请求协议

Get请求

Post请求

三、响应协议

四、Get请求与Post请求区别

1、什么情况下浏览器发送的请求是GET请求,什么情况下浏览器发送的请求是POST请求?

2、GET请求和POST请求有什么区别?

3、GET请求和POST请求应该如何选择?

五、缓存解决方案


一、什么是HTTP协议

  • 超文本传输协议
  • 浏览器和服务器之间的一种通讯协议
  • 该协议时W3C负责制定的,其本质上就是数据传送格式,提前指定好了的。浏览器和服务器都必须按照这种格式接收与发送数据
  • HTTP协议是无连接、无状态的:请求的瞬间浏览器和服务器之间的通道是打开的,请求响应结束后,通道关闭;这样做的目的是降低服务器的压力

二、请求协议

请求协议包括四部分:

1、请求行

2、消息报头

3、空白行

4、请求体

请求行包括:请求方式 URI 协议版本号

空白行:专门用来分离消息报头和请求体的

Get请求

如下是一个GET请求的登陆页面的请求,由于请求方式为GET,所以发送数据在请求行上发送!故请求体为空。

GET /webapp10/login?username=admin&password=123 HTTP/1.1 请求行Accept: text/html, application/xhtm1+xm1,image/jxr ,*/*消息报头X-Httpwatch-RID: 50301-10022
Referer : http: / / localhost :8080/webapp10/Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (windows NT 10.0; wOw64; Trident/7.0;rv:11.0) like GeckoAccept-Encoding: gzip,deflate
Host: localhost :8080
connection: Keep-Alive

Post请求

如下是一个POST请求的登陆页面的请求,请求体展示了请求的内容

username=admin&password=☆☆☆
PoST /webapp10/login HTTP/1.1 请求行
Accept: text/htm1,application/xhtm1+xm1,image/jxr ,*/*消息报头X-Httpwatch-RID:50301-10054
Referer : http: / [ localhost : 8080/webapp10/Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (windows NT 10.0; wOw64; Trident/7.0;rv:11.0) like GeckoContent-Type: application/x-www-for m-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost :8080
Content-Length: 27Connection: Keep-Alivecache-Control: no-cache
空白行
user name=admin&passwor d=123 请求体

三、响应协议

响应协议包括四部分:状态行、响应报头、空白行、响应体

状态行:协议版本号 状态码
空白行:是用来分离响应报头和响应体的

响应协议中重点掌握状态码:

  • 200 响应成功正常结束
  • 404 资源未找到
  • 500 服务器内部错误

如下是服务器的响应:

HTTP/1.1 200 OK状态行
server : Apache-coyote/1.1响应报头
content-Type: text/html ; charset=UTF-8Content-Length: 21
Date: Thu,13 Aug 2020 10:15:13 GMT
空白行
<h1>登陆成功</h1>响应体

四、Get请求与Post请求区别

1、什么情况下浏览器发送的请求是GET请求,什么情况下浏览器发送的请求是POST请求?

只有当使用表单form,并且讲form的标签的method属性设置为method=“post”,才是POST请求方式,其余剩下的所有请求都是基于GET请求

2、GET请求和POST请求有什么区别?

  • GET请求在请求行上提交数据,格式uri?name=value&name=value,这种提交方式最终提交的数据会显示在浏览器地址栏上
  • POST请求在请求体中提交数据,相对安全,提交格式name=value&name=value,这种提交方式最终不会显示在浏览器地址栏上
  • POST请求在请求体中提交数据,所以POST请求提交的数据没有长度限制【POST可以提交大数据】
  • GET请求在请求行上提交数据,所以GET请求提交的数据长度有限制
  • GET请求只能提交字符串数据,POST请求可以提交任何类型的数据,包括视频…,所以文件上传必须使用POST请求
  • GET请求最终的结果,会被浏览器缓存收纳,而POST不会被缓存收纳(为什么GET会被缓存?)

3、GET请求和POST请求应该如何选择?

  • 有敏感数据 POST
  • 传送的数据不是普通字符串 POST
  • 传送的数据非常多 POST
  • 这个请求是为了修改服务器端资源 POST
  • GET请求多数情况下是从服务器中读取资源,这个读取的资源在短时间内不会发送变化,所以GET请求最终的结果会被浏览器缓存起来
  • POST请求是为了修改服务器端的资源,而每一次修改结果都是不同的,最终结果没有必要被浏览器缓存

五、缓存解决方案

浏览器将资源缓存后,缓存的资源是和某个特定的路径绑定在一起的,只要浏览器再发送这个相同的请求路径,这个时候浏览器就会去缓存中获取资源,不再访问服务器,以这种方式降低服务器的压力,提高用户体验。

但是有的时候我们并不希望走缓存,希望每一次后哦访问服务器,可以在请求路径后面添加时间戳例如:http://ip:port/oa/system/logout?timetamp=1234564635423

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值