HTTP报文 请求方式 get/post请求方式 区别 幂等性

HTTP报文

报文的组成部分
1.对报文进行描述的起始行
请求报文:请求方法 请求URL HTTP协议及版本
响应报文:报文协议及版本 状态码及状态描述
2.包含属性的首部/头部(header)
3.包含数据的主体(body)可选项

请求方式

put:上传资源 form表单不支持 提交即存储的原则(无验证机制 有安全漏洞) 需要配置服务器支持put方式转发给后端操作
delete:删除资源 form表单不支持 提交即删除的原则(无验证机制 有安全漏洞) 需要配置服务器支持put方式转发给后端操作
post:修改资源
get:获取资源

get/post请求方式

get主要用来获取数据
get的数据在请求体中式查询字符串参数
post主要用于传输数据到后端进行增加 删除 更新数据 提交表单
post的数据在请求体中是表单数据

区别

1.post更安全
不会作为url的一部分 不会被缓存 保存在服务器日志和浏览器记录中
2.post发送的数据量更大(GET有url长度限制)
3.post能发送更多的数据类型 (各种类型的文件)
get只能发送ASCII字符
4.post比get速度慢

慢的原因
1.post包含更多的请求头
2.post接收数据之前会先将请求头发送给服务器确认 然后发送数据
3.get会进行数据缓存 post不会
4.post不能进行管道化传输

post过程
1.三次握手 浏览器确认并发送post请求头
2.服务器返回状态码100后 continue响应
3.浏览器确认发送数据
4.服务器返回200Ok响应
get过程
1.三次握手 浏览器确认并发送请求头和数据
2.服务器返回200Ok响应

串行连接

一次事务结束后连接断开 下次事务开始时重新建立连接

持久化连接

(HTTP/1.0 1.1)连接不会关闭
一次事务结束后连接不会断开 下次事务开始 直接发送请求不建立连接

管道化持久连接

(HTTP/1.1)
把所有的请求放到队列里 不等响应 一个一个发送请求的同时接收相应的响应

幂等性

数学中的幂等 x^y = x x = 0 || 1
幂等性 一个HTTP请求中 不会对数据或状态做修改 并且每次请求都会返回同样的结果
必要性
1.get请求必须遵守幂等性 从HTTP请求上来看 get只能获取数据
2.post请求一般做增删改的操作 所以一般不遵守幂等性

管道化传输不可以使用非幂等性请求的原因
假设 一个管道中有10个请求 发送了9个请求 但是连接关闭了 即使受到了9个响应 这9个响应内容也将被清空 那么客户端
会重新发起这9个请求 但是9个响应受到就证明服务器已经做了响应的操作 如果是非幂等的请求 则会出现操作的错误(如支付
增删改数据等) 所以管道化传输不支持非幂等的请求 post是非幂等的或幂等的 都不支持管道化传输

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_聪明勇敢有力气

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值