一分鐘理解post和put(安全與冪等角度)
HTTP方法的安全性和冪等性
可以認為安全的方法都是隻讀的方法(GET, HEAD, OPTIONS),不會改變資源狀態,顯然,這三個方法也是冪等的。
DELETE方法的語義表示刪除伺服器上的一個資源,第一次刪除成功後該資源就不存在了,資源狀態改變了,所以DELETE方法不具備安全特性。然而HTTP協議規定DELETE方法是冪等的,每次刪除該資源都要返回狀態碼200 OK,伺服器端要實現冪等的DELETE方法,必須記錄所有已刪除資源的元資料(Metadata),否則,第二次刪除後返回的響應碼就會類似404 Not Found了。
PUT和POST方法語義中都有修改資源狀態的意思,因此都不是安全的。但是PUT方法是冪等的,POST方法不是冪等的,這麼設計的理由是:
HTTP協議規定,POST方法修改資源狀態時,URL指示的是該資源的父級資源,待修改資源的ID資訊在請求體中攜帶。而PUT方法修改資源狀態時,URL直接指示待修改資源。因此,同樣是建立資源,重複提交POST請求可能產生兩個不同的資源,而重複提交PUT請求只會對其URL中指定的資源起作用,也就是隻會建立一個資源。
相關推薦
一分鐘理解post和put(安全與冪等角度)
HTTP方法的安全性和冪等性 可以認為安全的方法都是隻讀的方法(GET, HEAD, OPTIONS),不會改變資源狀態,顯然,這三個方法也是冪等的。 DELETE方法的語義表示刪除伺服器上的一個資源,第一次刪除成功後該資源就不存在了,資源狀態改變了,所以DELETE方法不具備安全特
restful介面規範(安全與冪等)
GET/POST/PUT/DELETE四種方法 GET 安全且冪等 獲取表示 變更時獲取表示(快取) 200(OK) - 表示已在響應中發出204(無內容) - 資源有空表示301(Moved Permane
三分鐘理解Java中字串(String)的儲存和賦值原理
可能很多java的初學者對String的儲存和賦值有迷惑,以下是一個很簡單的測試用例,你只需要花幾分鐘時間便可理解。 1.在看例子之前,確保你理解以下幾個術語: 棧:由JVM分配區域,用於儲存執行緒執行的動作和資料引用。棧是一個執行的單位,Java中一個執行緒就會相應有一個
通俗易懂理解TCP和UDP(轉)
建立 休息 如果 str 否則 無連接 一分鐘 tis 得到 知乎看到一位大牛“車小胖”的類比很貼切,就轉過來了。 原文鏈接:https://www.zhihu.com/question/51388497 或者:https://daily.zhihu.com/story/9
帶你一分鐘理解閉包--js面向物件程式設計
上一篇《簡單粗暴地理解js原型鏈--js面向物件程式設計》沒想到能攢到這麼多贊,實屬意外。分享是個好事情,尤其是分享自己的學習感悟。所以網上關於原型鏈、閉包、作用域等文章多如牛毛,很多文章寫得很深入很專業,而我卻喜歡用更簡單方式來解說簡單的事情。 什麼是閉包? 先看一段程式碼:
帶你一分鐘理解JS閉包——通俗易懂
網上關於閉包的文章有很多,但是大多數都使用了太多專業術語,不便於理解,我在這試著用通俗一點的語言解釋一下何為閉包。 什麼是閉包? 什麼是閉包?閉包是什麼? 先來看一段程式碼: function a(){ var n = 0; function inc() { n+
一分鐘理解Flexbox彈性佈局
圖解 Flexbox 本文圖片、部分翻譯來自原文 How Flexbox works — explained with big, colorful, animated gifs 屬性 #1 display: flex 示例如下 上面4個
用一分鐘理解console的這個原理,多留幾根黑髮~
引言 問題: console打印出的值與實際值不符的原因。 碰到這個問題是因為更改某一個值a後將其儲存起來,更改為a1後,然而打印出來的值卻是a1,展開列印的值是a。因為不理解這個現象,導致除錯程式碼走了很多彎路,最後才定位到問題。 先來看現象 原因 程式碼 let a = {
一分鐘理解資料庫連線池
問題: 前面介紹了使用JDBC來獲取資料庫的連線,這種方法適用於適用於使用者較少的時候,但當用戶連線量較大時,資源消耗問題就凸顯而出;當一個網站有20萬個使用者訪問時,使用者的每次請求都會向資料庫獲取連線,那麼資料庫伺服器就要建立20萬次連線,而資料庫建立連線時會消耗較大的資源,建立的時間也相對
一分鐘實現內網穿透(ngrok伺服器搭建)
簡單來說內網穿透的目的是:讓外網能訪問你本地的應用,例如在外網開啟你本地http://127.0.0.1指向的Web站點。 最近公司的花生殼到期了,要續費,發現價格一直在漲,都是5年以上的老使用者,旗艦版都沒有實現內網完全穿透,打算自己動手替換這個服務,中間走
POST 和 PUT 方法區別
Http定義了與 伺服器的互動方法,其中除了一般我們用的最多的GET,POST 其實還有PUT和DELETE 根據RFC2616標準(現行的HTTP/1.1)其實還有OP
一分鐘理解向後相容
什麼是相容 談到相容,少不了獲得相容收益的目標物件,以及提供相容功能的元件這兩個相互對應的概念。 如果一個目標物件,能否在同一組件的同個不同版本上協同工作,則移該元件的兩個版本是相容的,如下圖所示: 相容性分類 元件的兩個版本是相容的,那就會有新
HTTP提交方式之PUT詳細介紹及POST和PUT的區別
POST是用來提交資料的。提交的資料放在HTTP請求的正文裡,目的在於提交資料並用於伺服器端的儲存,而不允許使用者過多的更改相應資料(主要是相對於在url 修改要麻煩很多)。PUT操作是冪等的。所謂冪等是指不管進行多少次操作,結果都一樣。比如我用PUT修改一篇文章,然後在做同
一分鐘理解註解
註解這個東西我們肯定每天都能看見,也許有時候看的太多了到是會忽略註解這東西具體是如何工作的。今天在這裡用最短的篇幅快速講解下註解的原理,對這塊記的不太清楚的同學也可以再次看看,下次有人詳細問這塊的話不至於一知半解。 一句話描述:就是元資料,即一種描述資料的資
Http請求中,post和put的區別
有的觀點認為,應該用POST來建立一個資源,用PUT來更新一個資源;有的觀點認為,應該用PUT來建立一個資源,用POST來更新一個資源;還有的觀點認為可以用PUT和POST中任何一個來做建立或者更新一個資源。這些觀點都只看到了風格,爭論起來也只是爭論哪種風格更好,其實,用
福彩快3和一分鐘快3和值怎麽玩的.有什麽規律技巧啊?怎麽判斷走勢?
增強 還在 上大 個人 光有 梳理 讓我 實戰 問題 導師(768841507)曾經軟件計劃10連中,我跟第一把就死;我在想我到底是有多背?這麽小的幾率都能被我趕上?後來想了很多,想明白了一個問題,我們是在賭,也就是在賭運氣,而運氣有好的時候也有壞的 時候,都是有一定概率
推薦收藏系列:一文理解JVM虛擬機器(記憶體、垃圾回收、效能優化)解決面試中遇到問題
JVM棧(Java Virtual Machine Stacks): Java中一個執行緒就會相應有一個執行緒棧與之對應,因為不同的執行緒執行邏輯有所不同,因此需要一個獨立的執行緒棧,因此棧儲存的資訊都是跟當前執行緒(或程式)相關資訊的,包括區域性變數、程式執行狀態、方法返回值、方法出口等等。每一個方法
一分鐘理解系列—半導體儲存晶片的知識點總結
在計算機的儲存器中,按儲存介質進行分類的話,可將儲存器分成半導體儲存器、磁表面儲存器、磁芯儲存器、光碟儲存器。而除了半導體儲存器中的資料易失以外,其他的儲存介質都具有非易失的特性。 **那麼,半導體儲存晶片的結構是怎樣的呢?** 話不多說,我們來看下吧。 #### 半導體儲存晶片的基本結構 ![在這裡插
關於AMD(異步加載模塊)和CMD(同步加載模塊),require.js
一個數 全局 瀏覽器 加載模塊 cal efi 實戰 意思 環境 1.CommonJS,有一個全局性方法require(),用於加載模塊。假定有一個數學模塊math.js,就可以像下面這樣加載。 var math = require(‘math‘); 然後,就可以調用
linux實戰考試題:批量創建用戶和密碼(不能使用循環)
linux 實戰 批量創建10個用戶,並且設置隨機8位密碼,要求不能用shell的循環(例如:for,while等),只能用linux命令及管道實現。方法1:[[email protected]/* */ /]# echo stu{01..10}|tr " " "\n"|sed -r ‘s