HTTP方法:幂等性和安全性
冪等性和安全性是HTTP方法的屬性。 HTTP RFC定義了這些屬性,并告訴我們哪些HTTP方法是安全且冪等的。 服務(wù)器應(yīng)用程序應(yīng)確保正確執(zhí)行安全和冪等的語義,如客戶端期望的那樣。
安全的HTTP方法
如果HTTP方法不更改服務(wù)器狀態(tài),則認為它們是安全的。 因此,安全方法只能用于只讀操作。 HTTP RFC定義了以下安全方法:GET,HEAD,OPTIONS和TRACE。
實際上,通常不可能以不改變?nèi)魏畏?wù)器狀態(tài)的方式來實現(xiàn)安全方法。
例如,GET請求可能會創(chuàng)建日志或?qū)徍讼?#xff0c;更新統(tǒng)計值或觸發(fā)服務(wù)器上的緩存刷新。
RFC在這里告訴我們:
自然地,不可能確保服務(wù)器不會由于執(zhí)行GET請求而產(chǎn)生副作用; 實際上,一些動態(tài)資源認為該功能。 這里的重要區(qū)別是用戶沒有要求副作用,因此不能對它們負責(zé)。
冪等HTTP方法
冪等意味著多個相同的請求將具有相同的結(jié)果。 因此,發(fā)送請求一次還是多次都沒有關(guān)系。 以下HTTP方法是冪等的:GET,HEAD,OPTIONS,TRACE,PUT和DELETE。 所有安全的HTTP方法都是冪等的,但PUT和DELETE是冪等的,但并不安全。
請注意,冪等性并不意味著服務(wù)器必須對每個請求以相同的方式進行響應(yīng)。
例如,假設(shè)我們要使用DELETE請求通過ID刪除項目:
DELETE /projects/ 123 HTTP/ 1.1作為響應(yīng),我們可能會收到HTTP 200狀態(tài)代碼,指示該項目已成功刪除。 如果我們再次發(fā)送此DELETE請求,則可能會收到HTTP 404作為響應(yīng),因為該項目已被刪除。 第二個請求沒有更改服務(wù)器狀態(tài),因此即使我們得到不同的響應(yīng),DELETE操作也是冪等的。
冪等性是API的一項積極功能,因為它可以使API更具容錯性。 假設(shè)客戶端存在問題,并且請求被多次發(fā)送。 只要使用冪等操作,就不會在服務(wù)器端造成任何問題。
HTTP方法概述
下表總結(jié)了哪些HTTP方法是安全的和冪等的:
| HTTP方法 | 安全 | 等冪的 |
| 得到 | 是 | 是 |
| 頭 | 是 | 是 |
| 選項 | 是 | 是 |
| 跟蹤 | 是 | 是 |
| 放 | 沒有 | 是 |
| 刪除 | 沒有 | 是 |
| 開機自檢 | 沒有 | 沒有 |
| 補丁 | 沒有 | 沒有 |
翻譯自: https://www.javacodegeeks.com/2020/02/http-methods-idempotency-and-safety.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的HTTP方法:幂等性和安全性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电离平衡常数是什么 电离平衡常数是什么意
- 下一篇: 如何在Java中将数组转换为列表