Post和Get的區別

2021-10-01 03:37:11 字數 2449 閱讀 9871

02 常見的誤區

3 http狀態碼附錄

服務端響應response也由四個部分組成,分別是:狀態行、訊息報頭、空行、響應正文

http請求可以使用多種請求方法。

http1.0定義了三種請求方法:get,post和head方法。

http1.1新增了五種請求方法:options,put,delete,trace和connect方法。

http2.0新的二進位制格式(binary format),http1.x的解析是基於文字。基於文字協議的格式解析存在天然缺陷,文字的表現形式由多樣性,要做到健壯考慮的場景必然很多,二進位制則不同,只認0和1的組合。基於這種考慮http2.0的協議解析決定採用二進位制格式,實現方便且健壯。

多路復用(multiplexing),即連線共享,即每乙個request都是用作連線共享機制的。乙個request對應乙個id,這樣乙個連線上可以有多個request,每個連線的request可以隨機的混雜在一起,接收方可以根據request的id將request再歸屬到各自不同的服務端請求裡面。

header壓縮,如上文中所言,對前面提到過的http1.x的header帶有大量資訊,而且每次都要重**送,http2.0使用encoder來減少需要傳輸的header大小,通訊雙方各自cache-份header fields表,即避免了重複header的傳輸,又減小了需要傳輸的大小。

get請求指定的頁面資訊,並返回實體主體

head類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭

post向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。post請求可能會導致新的資源的建立/或已有資源的修改

put從客戶端向伺服器傳送的資料取代指定的文件的內容。

delete請求伺服器刪除指定的頁面

connect http/1.1協議中預留給能夠連線改為管道方式的**伺服器。

options允許客戶端檢視伺服器的效能。

trace回顯伺服器收到的請求,主要用於測試或診斷。

http協議最常見的兩種方式get和post,這幾點答案其實有幾點並不準確

get和post的區別

「用處:get常用於取回資料,post用於提交資料」

請求引數

get是querystring(僅支援urlencode編碼),post是放在body(支援多種編碼)

query引數是url的一部分,而get、post等是請求方法的一種,不管是哪種請求方法,都必須有url,而url的query是可選的,可有可無。

「請求引數長度限制:get請求長度最多1024kb,post對請求資料沒有限制」

get方法提交的url引數資料大小沒有限制,在http協議中沒有對url擦和高難度進行限制(不僅僅是querystring的長度),這個限制是特定的瀏覽器及伺服器對他的限制

下面就是對各種瀏覽器和伺服器的最大處理能力做一些說明

ie瀏覽器對url的最大限制為2083個字元

所以為了符合所有標準,url的最好不好超過最低標準的2083個字元(2k+35)。當然在做客戶端程式時,url並不展示給使用者,只是個程式呼叫,這時長度只收web伺服器的影響了。對於中文的傳遞,乙個漢字最終編碼後的字元長度是9個字元。

「post比get安全性要高」

這裡的安全是相對性,並不是真正意義上的安全,通過get提交的資料都將顯示到url上,頁面會被瀏覽器快取,其他人檢視歷史記錄會看到提交的資料,而post不會。另外get提交資料還可能會造成csrf攻擊。

這一點理解起來還是有一定難度的,實際上,不論哪一種瀏覽器,在傳送 post 的時候都沒有帶 expect 頭,server 也自然不會發 100 continue。通過抓包發現,儘管會分兩次,body 就是緊隨在 header 後面傳送的,根本不存在『等待伺服器響應』這一說。

從另乙個角度說,tcp 是傳輸層協議。別人問你應用層協議裡的 get 和 post 有啥區別,你回答說這倆在傳輸層上傳送資料的時候不一樣,確定別人不抽你?

參考資料:

301 moved permanently:

所請求的頁面已經轉移至新的url

302 found:

所請求的頁面已經臨時轉移至新的url。

303 see other:

所請求的頁面可在別的url下被找到。

304 not modified:

未按預期修改文件。客戶端有緩衝的文件並發出了乙個條件性的請求(一般是提供if-modified-since頭表示客戶只想比指定日期更新的文件)。伺服器告訴客戶,原來緩衝的文件還可以繼續使用。

305 use proxy:

客戶請求的文件應該通過location頭所指明的**伺服器提取。

306 unused:

此**被用於前一版本。目前已不再使用,但是**依然被保留。

307 temporary redirect:

被請求的頁面已經臨時移至新的url。

get和post的區別

在b s應用程式中,前台與後台的資料互動,都是通過html中form表單完成的。form提供了兩種資料傳輸的方式 get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,web容器已經遮蔽了二者的一些差異,但是了解二者的...

post和get的區別?

1.get是從伺服器上獲取資料,post是向伺服器傳送資料。get 和 post只是一種傳遞資料的方式,get也可以把資料傳到伺服器,他們的本質都是傳送請求和接收結果。只是組織格式和資料量上面有差別,http協議裡面有介紹。2.get是把引數資料佇列加到提交表單的action屬性所指的url中,值和...

post和get的區別

兩者的主要區別在資料傳送方式和接收方式上 1 在客戶端 get方式是通過url提交資料 post方式是提交後位址列是不變的 2 在伺服器端 get方式是利用解析位址列字串的方式,伺服器獲取get提交的值 post方式是以form的形式提交表單引數 一般來說,盡量避免使用get方式提交表單,因為有可能...