美文网首页HTTP
HTTP修炼手册-幂等/安全方法

HTTP修炼手册-幂等/安全方法

作者: 高浩浩浩浩浩浩 | 来源:发表于2017-03-22 11:48 被阅读12次

哪些叫幂等或/且安全的方法?

安全方法是指不修改资源的 HTTP 方法。譬如,当使用 GET 或者 HEAD 作为资源 URL,都必须不去改变资源。然而,这并不全准确。意思是:它不改变资源的表示形式。对于安全方法,它仍然可能改变服务器上的内容或资源,但这必须不导致不同的表现形式。

这表示下述是不对的,因为它实际上将删除博客文章:

GET /blog/1234/delete HTTP/1.1

安全方法是那些可以被缓存、对资源无损预加载的方法

幂等方法

HTTP 幂等方法是指无论调用多少次都不会有不同结果的 HTTP 方法。它无论是调用一次,还是十次都无关紧要。结果仍应相同。再次强调, 它只作用于结果而非资源本身。它仍可能被操纵(如一个更新的 timestamp),提供这一信息并不影响(当前)资源的表现形式。
考虑一下下面的结果:

a = 4;
a++;

第一个例子是幂等的:无论这个声明被执行多少次,a 总是等于 4。第二个例子并不是幂等的,执行 10 次将导致一个与执行 5 次所不一样的结果。由于两个例子 都改变 a 的值,因此两者都不是安全方法。

幂等对于构建一个容易(fault-tolerent)的 API 非常重要。假设一个客户端希望通过 POST 来更新一个资源,由于 POST 是一个非幂等方法,调用它多次 将导致错误的更新。那么当你向服务发送一个 POST 请求过程中超时将会发生什么,是不是资源已经被更新?超时发生在向服务器发送请求阶段还是服务返回 客户端阶段?我们是否能够安全地重试一遍,或第一要查出资源究竟发生了什么变化?通过幂等方法,我们则无须回答这种问题,直到我们从服务器得到返回, 我们可以安全地重发请求。

HTTP客户端是不应该用管道化的方式去发送有副作用的请求(如POST),因为无法安全性的重试这些非幂等请求。

处理安全方法仍需谨慎: if a seemingly safe method like [GET] will change a resource, it might be possible that any middleware client proxy systems between you and the server, will cache this response. Another client who wants to change this resource through the same URL (like: http://example.org/api/article/1234/delete), will not call the server, but return the information directly from the cache. Non-safe (and non-idempotent) methods will never be cached by any middleware proxies

(部分) HTTP 方法概览

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

另请参见

RFC 7231 - HTTP-1.1 Spec
When to use [PUT] or [POST]?

相关文章

  • HTTP修炼手册-幂等/安全方法

    哪些叫幂等或/且安全的方法? 安全方法是指不修改资源的 HTTP 方法。譬如,当使用 GET 或者 HEAD 作为...

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

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

  • HTTP协议-安全和幂等方法

    Http协议官网 9.1 Safe and Idempotent Methods 9.1.1 Safe Metho...

  • 网络相关问题

    (1)Http Get和Post方法 GET:无副作用,幂等,不可带 Request BodyPUT:副作用,幂等...

  • 安全与幂等

    安全: HTTP 协议里的安全是指 请求方法不会破坏服务器上的资源,对资源不会造成实质性的破坏 幂等:多次操作服务...

  • 什么是幂等性

    什么是幂等性 HTTP 幂等方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。不管你调用一次,还是调用一...

  • RESTFul API设计

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

  • ASP .NET Core Web API_12_ POST P

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

  • 防止重复下单和幂等模式的应用

    重复下单 HTTP的幂等性 HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的结果。在HTTP 1.1...

  • 【HTTP】幂等性

    HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用 幂等的 HTTP 方法,同样的请求被执行一次...

网友评论

    本文标题:HTTP修炼手册-幂等/安全方法

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