HTTP方法的安全性和幂等性
|
||||||||||||||||||||||||||||
HTTP方法的安全性和幂等性 |
||||||||||||||||||||||||||||
Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端提供这些特性。安全性,仅指该方法的多次调用不会产生副作用,不涉及传统意义上的“安全”,这里的副作用是指资源状态。即,安全的方法不会修改资源状态,尽管多次调用的返回值可能不一样(被其他非安全方法修改过)。幂等性,是指该方法多次调用返回的效果(形式)一致,客户端可以重复调用并且期望同样的结果。幂等的含义类似于编程语言中的setter方法[1],一次调用和多次调用产生的效果是一致的,都是对一个变量进行赋值。安全性和幂等性含义有些接近,容易搞混。 |
||||||||||||||||||||||||||||
HTTP方法的安全性和幂等性见下表: |
||||||||||||||||||||||||||||
1)安全的意味着该操作用于获取信息而非修改信息。换句话说,请求一般不应产生副作用。 2)幂等的意味着对同一 URL 的多个请求应该返回同样的结果。 |
||||||||||||||||||||||||||||
DELETE方法的语义表示删除服务器上的一个资源,第一次删除成功后该资源就不存在了,资源状态改变了,所以DELETE方法不具备安全特性。然而HTTP协议规定DELETE方法是幂等的,每次删除该资源都要返回状态码200 OK,服务器端要实现幂等的DELETE方法,必须记录所有已删除资源的元数据(Metadata),否则,第二次删除后返回的响应码就会类似404 Not Found了。 |
||||||||||||||||||||||||||||
可以认为安全的方法都是只读的方法(GET, HEAD, OPTIONS),不会改变资源状态,显然,这三个方法也是幂等的。 |
||||||||||||||||||||||||||||
PUT和POST方法语义中都有修改资源状态的意思,因此都不是安全的。但是PUT方法是幂等的,POST方法不是幂等的,这么设计的理由是: HTTP协议规定,POST方法修改资源状态时,URL指示的是该资源的父级资源,待修改资源的ID信息在请求体中携带[2]。而PUT方法修改资源状态时,URL直接指示待修改资源[2]。因此,同样是创建资源,重复提交POST请求可能产生两个不同的资源,而重复提交PUT请求只会对其URL中指定的资源起作用,也就是只会创建一个资源。 References: –EOF– HTTP 定义了与服务器交互的不同方法,最基本的方法是 GET 和 POST。事实上 GET 适用于多数请求,而保留 POST 仅用于更新站点。根据 HTTP 规范,GET 用于信息获取,而且应该是 安全的和幂等的。所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。幂等的意味着对同一 URL 的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。 比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST 请求就不那么轻松了。POST 表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过 POST 请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解); 在表单里使用”post”和”get”有什么区别 在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有两点不同: 当服务器响应时,其状态行的信息为HTTP的版本号,状态码,及解释状态码的简单说明。现将5类状态码详细列出: |
文章参考:http://www.cnblogs.com/jinks/p/3511282.html
http://ymiter.iteye.com/blog/1922464
HTTP方法的安全性和幂等性相关推荐
- 使用ASP.NET Core 3.x 构建 RESTful API - 4.3 HTTP 方法的安全性和幂等性
什么样的HTTP方法是安全的? 如果一个方法不会改变资源的表述,那么这个方法就被认为是安全的. 例如 HTTP GET 和 HTTP HEAD 就被认为是安全的,但需要注意的是,这并不意味着执行GET ...
- 【Http】HTTP方法的安全性和幂等性
Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端提供这些特性. 安全性 仅指方法的多次调用不会产生副作用,不涉及传统意义上的"安全",这里的副作用 ...
- http 安全性和幂等性_HTTP方法:幂等性和安全性
http 安全性和幂等性 幂等性和安全性是HTTP方法的属性. HTTP RFC定义了这些属性,并告诉我们哪些HTTP方法是安全且幂等的. 服务器应用程序应确保正确执行安全和幂等的语义,如客户端期望的 ...
- 网络爬虫学习3 - Requests库的七个主要方法、安全性问题与异常处理、反爬虫和Robots协议
网络爬虫MOOC学习打卡 - 第三天 文章目录 网络爬虫MOOC学习打卡 - 第三天 一.Requests库主要方法解析 0.Requests库的七个主要方法 1.request()方法request ...
- HTTP协议漫谈 - HTTP协议请求方法
前言 在上一篇文章<HTTP协议漫谈 - HTTP协议历史和报文结构>中介绍了HTTP协议的历史和版本变化,以及HTTP协议报文的总体结构. 按照HTTP/1.1 RFC文档中的定义,HT ...
- 花5分钟看这篇之前,你才发现你不懂RESTful
前言 在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景?听完下面描述我想你就会明白: 在互联网并没有完全流行的初期,移动端也没有那么盛行,页面请 ...
- 花五分钟看这篇之前,你才发现你不懂RESTful
原创公众号(希望能支持一下):bigsai 转载请联系bigsai 文章收藏在回车课堂 和github 前言 在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题? ...
- ASP.NETCore编程实现基本认证
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authentication)是一种允许浏览器或其他客户端程序使用(用户名,口令)请求资源的身份验证方式,不要求cookie,sessio ...
- restful api接口设计
技术由来: 互联网早期,页面请求和并发量不高,且移动端未盛行时对接口要求不高,使用动态页面(jsp)就能满足绝大多数的使用需求.但是随着互联网和移动设备的发展,人们对Web应用的使用需求也增加,传统的 ...
最新文章
- 从功能测试到性能测试的转型之路
- 苹果手机视频传输教程-通过无线将电脑上视频传到手机
- maven打包jar单独配置log4j.properites文件记录日志
- bzoj1193 [HNOI2006]马步距离 构造+枚举
- Nodejs抓取非utf8字符编码的页面
- fgo服务器维护抽卡,FGO国服最佳抽卡时间推荐,玄学或许能让你脱非入欧!
- ImportError: DLL load failed while importing Qsci
- 外贸常用术语_常用外贸术语大全
- RK3399安卓改linux,RK3399 Type-C改为MicroUSB
- 异步编程之 Isolate
- 都2022年你还不会安装系统?看我三分钟完事PE制作并进行Win11系统安装实践
- 如何通过划分VLAN,有效规划企业网ip地址!
- 为此计算机上所有用户安装此加载项,win7打开特定网站提示“控件无法安装,windows已阻止此软件因为无法验证发行者”怎么办...
- Linux 下的 3D 设计软件-FreeCAD
- 北京市工作居住证办理一小保险
- 点投影到平面上的方法总结
- 敬业福朋友有你也可以有 区块链做到有福同享
- Vue 中 store 基本用法
- 【matlab数字图像处理】 uint8和double类型
- 程序员除了会CRUD之外,还应该知道什么叫CQRS!