网络协议丨安全与幂等

文章探讨了HTTP请求方法中的安全性和幂等性概念。安全指请求不会改变服务器资源,GET和HEAD是安全的。幂等意味着多次执行同一操作结果相同,GET、HEAD和PUT是幂等的,而POST和DELETE则不然。POST用于新增资源,非幂等,PUT用于替换资源,是幂等的。文章建议将这些概念与数据库操作(INSERT,UPDATE)类比以更好地理解。
摘要由CSDN通过智能技术生成

关于HTTP请求方法有两个比较重要的概念:安全与幂等。

安全指的是什么?

在 HTTP 协议里,所谓的“安全”是指请求方法不会“破坏”服务器上的资源,即不会对服务器上的资源造成实质的修改。

按照这个定义,只有 GET 和 HEAD 方法是“安全”的,因为它们是“只读”操作,无论 GET 和 HEAD 操作多少次,服务器上的数据都不会受到影响。

而 POST/PUT/DELETE 操作会修改服务器上的资源,增加或删除数据,所以是“不安全”的。所以后两个方法现在很多服务器直接不支持或不处理。

什么是幂等?

“幂等”实际上是一个数学用语,被借用到了 HTTP 协议里,意思是多次执行相同的操作,结果也都是相同的,即多次“幂”后结果“相等”。比如1的3次幂还是1。

安全和幂等并不冲突,比如GET 和 HEAD 既是安全的也是幂等的,因为不管请求多少次,服务器的资源永远没有变化,结果相同。DELETE 可以多次删除同一个资源,效果都是“资源不存在”,所以也是幂等的。

POST 和 PUT 的幂等性质就略费解一点。

按照 RFC 里的语义,POST 是“新增或提交数据”,多次提交数据会创建多个资源,所以不是幂等的;而 PUT 是“替换或更新数据”,多次更新一个资源,资源还是会第一次更新的状态,所以是幂等的。

POST是新增,会导致资源增加,所以不是幂等。

PUT是替换,替换不会增加,1替换成了另一个1,结果还是1,所以PUT是幂等。

用数据库来理解,POST是INSERT,PUT是UPDATE,会更加清晰。

 

此文章为2月Day12学习笔记,内容来源于极客时间《透视HTTP协议》,强烈推荐该课程!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值