REST API 中幂等和安全的 HTTP 方法有什么区别?

7
PUT方法如何是幂等但不安全?有人能解释一下吗?
HTTP Method   Idempotent      Safe
OPTIONS        yes            yes
GET            yes            yes
HEAD           yes            yes
PUT            yes            no
POST           no             no
DELETE         yes            no
PATCH          no             no

接受了这个答案。 - pradeep m
2个回答

5

安全方法 不会在 内部(资源)做出任何更改

安全方法是可以缓存和预取的方法,不会对资源产生任何影响。

幂等方法 不会在 外部(响应)做出任何更改

幂等的HTTP方法是一种可以多次调用而没有不同结果的HTTP方法。


3
一切都在规范中:
4.2.2. 幂等方法
如果使用某种请求方法进行多个相同请求的预期影响与单个此类请求的影响相同,则该请求方法被认为是“幂等”的。在本规范中定义的请求方法中,PUT、DELETE和安全(safe)请求方法是幂等的。
与安全的定义类似,幂等属性仅适用于用户所请求的内容。服务器可以自由地单独记录每个请求、保留修订控制历史记录或为每个幂等请求实现其他非幂等副作用。
幂等方法之所以与众不同,是因为如果在客户端能够读取服务器的响应之前发生通信故障,则可以自动重复请求。例如,如果客户端发送了一个PUT请求,并且在接收到任何响应之前底层连接已关闭,则客户端可以建立新的连接并重试幂等请求。它知道即使原始请求成功,重复请求也会有相同的预期效果,尽管响应可能有所不同。
(来源:https://greenbytes.de/tech/webdav/rfc7231.html#idempotent.methods

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接