美文网首页PHP是世界上最好的语言
HTTP的安全性和幂等性(转)

HTTP的安全性和幂等性(转)

作者: ljh123 | 来源:发表于2019-07-22 06:41 被阅读2次

原文HTTP方法的安全性和幂等性
Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端提供这些特性。安全性,仅指该方法的多次调用不会产生副作用,不涉及传统意义上的“安全”,这里的副作用是指资源状态。即,安全的方法不会修改资源状态,尽管多次调用的返回值可能不一样(被其他非安全方法修改过)。幂等性,是指该方法多次调用返回的效果(形式)一致,客户端可以重复调用并且期望同样的结果。幂等是一次调用和多次调用产生的效果是一致的,都是对一个变量进行赋值。

可以认为安全的方法都是只读的方法(GET, HEAD, OPTIONS),不会改变资源状态,显然,这三个方法也是幂等的。

DELETE方法的语义表示删除服务器上的一个资源,第一次删除成功后该资源就不存在了,资源状态改变了,所以DELETE方法不具备安全特性。然而HTTP协议规定DELETE方法是幂等的,每次删除该资源都要返回状态码200 OK,服务器端要实现幂等的DELETE方法,必须记录所有已删除资源的元数据(Metadata),否则,第二次删除后返回的响应码就会类似404 Not Found了。

PUT和POST方法语义中都有修改资源状态的意思,因此都不是安全的。但是PUT方法是幂等的,POST方法不是幂等的,这么设计的理由是:

HTTP协议规定,POST方法修改资源状态时,URL指示的是该资源的父级资源,待修改资源的ID信息在请求体中携带[2]。而PUT方法修改资源状态时,URL直接指示待修改资源[2]。因此,同样是创建资源,重复提交POST请求可能产生两个不同的资源,而重复提交PUT请求只会对其URL中指定的资源起作用,也就是只会创建一个资源。

References:
[1] Subbu Allamaraju著, 丁雪丰等译. RESTful Web Services Cookbook中文版. 电子工业出版社.
[2] Hypertext Transfer Protocol — HTTP/1.1. Method Definitions: POST [1]
[3] Hypertext Transfer Protocol — HTTP/1.1. Method Definitions: PUT [2]

相关文章

  • HTTP的安全性和幂等性(转)

    原文HTTP方法的安全性和幂等性Http协议规定了不同方法的安全特性和幂等特性,作为服务提供者的服务器必需为客户端...

  • HTTP中GET和POST的区别

    一、论点 1.Get用于信息获取,http协议要求安全性和幂等性,Post请求用于更新和修改服务的资源,不具有幂等...

  • RESTFul API设计

    要定义一个严谨的REST统一接口,就需要真正理解HTTP方法的安全性和幂等性。安全性代表安全的REST接口,是指外...

  • GET和POST请求的区别

    总结说明 HTTP报文层面:GET将请求信息放在URL,POST放在报文体中。数据库层面:GET符合幂等性和安全性...

  • GET和POST请求的区别

    HTTP报文层面:GET将请求信息放在URL,POST放在报文体中。 数据库层面:GET符合幂等性和安全性,POS...

  • 保证微服务接口幂等性的几种实现方式

    HTTP幂等性 Wiki上关于的 幂等。 在HTTP/1.1规范中幂等性(Idempotence)的定义是: Me...

  • 接口幂等性书目录

    1.幂等性定义 1.1 数学定义 1.2 HTTP规范的定义 2. 何种接口提供幂等性 2.1 HTTP支持幂等性...

  • ASP .NET Core Web API_12_ POST P

    安全性&幂等性 安全性☞方法执行后并不会改变资源的表述 幂等性☞方法无论执行多少次都会得到同样的结果 POST 添...

  • 幂等

    再谈幂等机制 一、什么是幂等性? 幂等性(Idempotence)。在HTTP/1.1规范中幂等性的定义是: Me...

  • 高并发概览

    java的高并发处理主要包括两个方面:安全性和快速响应 安全性 业务逻辑安全:幂等校验、snychronized、...

网友评论

    本文标题:HTTP的安全性和幂等性(转)

    本文链接:https://www.haomeiwen.com/subject/ygwblctx.html