前言:
大家現在度娘一下,查得最多的區別,可能就是:
「get把引數寫在url中,post通過請求體來傳參的」
「get沒有post安全,因為get引數直接顯示在url上」
「get請求在url中傳送的引數是有長度限制的,而post是沒有的」
但是,真相是這樣的嗎?!!!真相永遠只有乙個!!!
先分析一波:
get和post與資料如何傳遞沒有關係??
get和post是由http協議定義的。那麼使用哪個方式與應用層的資料如何傳輸是沒有相互關係的。從而,http就沒有要求,post一定要放到請求體裡面,get就一定要放到url裡面。
在html標準中,是有著類似的定義。但這只是html標準對http協議的用法的約定。也就是規範上說,無區別。
那麼,這個說法是從何而來的呢?是因為有各種瀏覽器等軟體的實現,就變成了我們現在熟知的現象,get要用url傳參,post用body傳參。
http協議對get和post有沒有對長度的限制??
http協議明確地指出了,http請求頭和請求體都沒有長度的要求。
而對於url長度上的限制,有兩方面的原因造成:
1. 瀏覽器。據說ie對url長度會限制在2048個字元內。但是就我所知,firefox是支援10w以上的長度。
2. 伺服器。伺服器處理超長的url本身就是一種負擔,更何況遭受惡意攻擊呢?因此,多數伺服器出於安全、穩定等多方面的考慮,會給url長度加限制。
但是這個限制是針對所有http請求的,與get、post沒有關係。
安全不安全和get、post有沒有關係??
這個問題,首先你得確認物件導向。
舉個例子:
1.你現在要讓我爸爸媽媽去看看這個url,你覺得安全嗎?
2.你現在要讓乙個剛入門的初級功能測試工程師去測試這個鏈結,你覺得安全嗎?
3.你現在要讓安全測試工程師去看看get請求,你覺得安全嗎?
所以,針對不同的人群,安全的定義就會不一樣。
「如果你願意一層一層一層的剝開我的心 ,你會發現你會訝異 ,你是我最壓抑 ,最深處的秘密 」
把get和post剝開後,他們的本質上就是tcp鏈結,並無差別。
只是由於http的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。
那麼真相到底是什麼呢?
get產生乙個tcp資料報;post產生兩個tcp資料報。
對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);
對於post,瀏覽器先傳送header,伺服器響應100(continue),然後再傳送data,伺服器響應200(返回資料);
http協議之get 和 post請求
一 get請求方式 例 請求頭 get servlet paramsservlet?param1 abc m2 xyz http 1.1 是向servlet paramsservlet提交資訊而資訊的內容是param1 abc,param2 xyz。附加的資訊用?後表示。而資訊之間用 符號間隔。特點...
Http的GET和POST請求
1 http頭資訊 request line 請求型別 訪問資源 http版本 headers http頭訊息 r n request body 任意其他資料body get請求樣例 post請求樣例 2 get和post區別 get主要從伺服器上獲取資料 post主要向伺服器傳送資料 get使用r...
http的get和post請求
http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url全稱是資源描述符,我們可以這樣認為 乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應...