計算機網路 HTTP 的 Methods

2021-10-07 20:23:41 字數 1241 閱讀 4213

get 是指完整請求乙個資源,post 是指提交表單。

get 直觀上是把引數包含在 url 內,請求獲取乙個 html 頁面、、css、js 等資源,瀏覽器可能會將 get 請求的 url 位址加入快取,以便下次訪問。

post 通過 request body 傳遞引數,提交乙個 form 表單, 並得到乙個顯示提交結果的網頁。

從表面上看,兩者的區別在於:

以上幾個方面並不是他們的本質區別,但至少是表面使用上的區別。兩者實際上是相同的,之所以會出現以上的區別,主要原因還是在於一些歷史原因和約定俗成的用法。

兩者的根本區別是:

正是由於 get 請求是冪等的,在網路不好的隧道中會嘗試重試,因此如果使用 get 來實現增刪改這些功能,則會有重複操作的風險,容易導致***嗎,而瀏覽器和作業系統並不能夠識別出這些操作來。

對於 get 請求,瀏覽器會把 http header 和 data 一併傳送出去,伺服器相應狀態碼 200(返回資料);對於 post, 瀏覽器會先傳送 header,伺服器相應狀態碼 100(continue)瀏覽器再傳送 data,伺服器相應狀態碼 200(返回資料)。在網路環境良好的情況下,發一次包和發兩次包的的時間差別基本可以忽略,而在網路環境差的情況下,兩次包的 tcp 在驗證資料報完整性上,有非常大的優點。但並不是所有的瀏覽器再 post 中都會傳送兩個包,firefox 就只傳送一次。

總的來說,get 和 post 的區別是:

getpost

使用 url 或者 cookie 傳參

將資料放在 request body 中

提交的資料長度有限制

可以處理非常大的資料

引數明文顯示在瀏覽器位址列中(不夠安全)

冪等性非冪等性

產生乙個 tcp 資料報

產生兩個 tcp 資料報

get:獲取被請求 url 指定的資訊實體。

post:向伺服器提交乙個帶有實體的請求,其實際功能通常由伺服器決定。

put:請求伺服器把請求中的實體儲存在請求 url 的標識下,如果該實體在伺服器已經存在,則新請求的實體將被當做所指定實體的修改版本。

delete:請求伺服器刪除請求 url 指定的資源。

trace:激發乙個遠端的、應用層的請求訊息迴路,該請求中不能包含實體。

connect:用於動態切換到隧道的**伺服器。

options:指定資源的通訊選項資訊。

冪等性(idempotence)

客戶端與伺服器端的安全性

計算機網路 HTTP

引子 前兩天看了 http 和 計算機網路 的第5章 運輸層 為了準確無誤地將資料送達目標處,tcp協議採用了 三次握手 three way handshaking 策略。三次握手 three way handshake 或三次聯絡。廣為流傳的譯名 三次 three way 並不準確。這裡的三次是指...

計算機網路 http

http,超文字傳輸協議hypertext transfer protocol。基於tcp,無狀態。http預設使用持續連線,但是也可以配置為使用非持續連線。持續連線就是指傳送請求,接收響應後,並不直接關閉tcp連線,再有下個http請求,還用這個tcp連線傳送 非持續連線就是傳送請求,接收響應後,...

計算機網路 HTTP

http的報文結構 http有兩類報文 請求報文和響應報文。它們的報文結構由三部分組成,分別為開始行 首部行和實體主體。開始行 用於區分是請求報文還是響應報文。首部行 用來說明瀏覽器 伺服器和報文主體的一些資訊 實體主體 在請求報文中一般都不用這個字段,響應報文中也可能沒有這個字段 在請求報文中,開...