CRR學習筆記 GET與POST區別

2021-09-14 04:14:52 字數 2244 閱讀 5467

get 用於獲取資源,而 post 用於傳輸實體主體。

get 和 post 的請求都能使用額外的引數,但是 get 的引數是以查詢字串出現在 url中,而 post 的引數儲存在實體主體中

不能因為 post 引數儲存在實體主體中就認為它的安全性更高,因為照樣可以通過一些抓包工具(fiddler)檢視。

因為 url 只支援 ascii 碼,因此get 的引數中如果存在中文等字元就需要先進行編碼。例如 中文 會轉換為 %e4%b8%ad%e6%96%87,而空格會轉換為 %20。post 參考支援標準字符集。

name1=value1&name2=value2安全的 http 方法不會改變伺服器狀態,也就是說它只是可讀的。

get 方法是安全的而 post 卻不是,因為 post 的目的是傳送實體主體內容,這個內容可能是使用者上傳的表單資料,上傳成功之後,伺服器可能把這個資料儲存到資料庫中,因此狀態也就發生了改變。

安全的方法除了 get 之外還有:head、options。

不安全的方法除了 post 之外還有 put、delete。

**冪等的 http 方法,同樣的請求被執行一次與連續執行多次的效果是一樣的,伺服器的狀態也是一樣的。**換句話說就是,冪等方法不應該具有***(統計用途除外)。

所有的安全方法也都是冪等的。

在正確實現的條件下,get,head,put 和 delete 等方法都是冪等的,而 post 方法不是。

get /pagex http/1.1 是冪等的,連續呼叫多次,客戶端接收到的結果都是一樣的:

get /pagex http/1.1post /add_row http/1.1 不是冪等的,如果呼叫多次,就會增加多行記錄:

post /add_row http/1.1 -> adds a 3rd rowdelete /idx/delete http/1.1 是冪等的,即便不同的請求接收到的狀態碼不一樣:

delete /idx/delete http/1.1 -> returns 404如果要對響應進行快取,需要滿足以下條件:

請求報文的 http 方法本身是可快取的,包括 get 和 head,但是 put 和 delete 不可快取,post 在多數情況下不可快取的。

**響應報文的狀態碼是可快取的,**包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501。

響應報文的 cache-control 首部字段沒有指定不進行快取。

為了闡述 post 和 get 的另乙個區別,需要先了解 xmlhttprequest:

xmlhttprequest 是乙個 api,它為客戶端提供了在客戶端和伺服器之間傳輸資料的功能。**它提供了乙個通過 url 來獲取資料的簡單方式,並且不會使整個頁面重新整理。**這使得網頁只更新一部分頁面而不會打擾到使用者。xmlhttprequest 在 ajax 中被大量使用。

*在使用 xmlhttprequest 的 post 方法時,瀏覽器會先傳送 header 再傳送 data。*但並不是所有瀏覽器會這麼做,例如火狐就不會。

而 get 方法 header 和 data 會一起傳送。

Python學習get與post請求

我們知道,http主要包括get與post請求兩種,對於給定的url,既可以用瀏覽器開啟也可以用 開啟。今天我們學習簡單的請求案例。1.urllib的request 匯入urllib.request庫 import urllib.request 定義乙個接受 的url url 用urlopen開啟請...

WEB中get與post傳參學習筆記!

get和post是http請求的兩種基本方法,要說它們的區別,接觸過web開發的人都能說出一二。最直觀的區別就是get把引數包含在url中,post通過request body傳遞引數。你可能自己寫過無數個get和post請求,或者已經看過很多權威 總結出的他們的區別,你非常清楚知道什麼時候該用什麼...

Get與Post的區別

1.href與action的區別 href只能get引數,action能get引數又能post引數 href一般用於單個連線,可以帶引數 url重寫 是採用get方式請求的,在位址列中可以看到所有的引數 action一樣用於表單的提交 如 註冊 等,他可以提交大量和比較複雜的引數,可通過post和g...