http中get 和 post的區別

2021-06-18 08:56:42 字數 2042 閱讀 7558

從表面的意思看get 和 post的區別get就是獲取資料,post就是傳送資料。這個是誤區。其實兩者都可以的,在ios向伺服器傳送請求裡面可以帶引數。

那麼這些誤區是怎麼出現的呢?先看看一下對http的解釋

一般在瀏覽器中輸入**訪問資源都是通過get方式;在form提交中,可以通過method指定提交方式為get或者post,預設為get提交 

http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete 

url全稱是資源描述符,我們可以這樣認為:乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查 ,改 ,增 ,刪 4個操作。到這裡,大家應該有個大概的了解了,get一般用於獲取/查詢 資源資訊,而post一般用於更新 資源資訊(個人認為這是get和post的本質區別,也是協議設計者的本意,其它區別都是具體表現形式的差異 )。

再進一步了解下他們兩個的區別:

1. get使用url或cookie傳參。而post將資料放在body中。

2. get的url會有長度上的限制,則post的資料則可以非常大。

3. post比get安全,因為資料在位址列上不可見。

這些也是有點誤區的,就像同步請求一定的慢嗎?

get和post與資料如何傳遞沒有關係?

get和post是由http協議定義的。在http協議中,method和data(url, body, header)是正交的兩個概念,也就是說,使用哪個method與應用層的資料如何傳輸是沒有相互關係的。

http沒有要求,如果method是post資料就要放在body中。也沒有要求,如果method是get,資料(引數)就一定要放在url中而不能放在body中。

那麼,網上流傳甚廣的這個說法是從何而來的呢?我在html標準中,找到了相似的描述。這和網上流傳的說法一致。但是這只是html標準對http協議的用法的約定。怎麼能當成get和post的區別呢?

而且,現代的web server都是支援get中包含body這樣的請求。雖然這種請求不可能從瀏覽器發出,但是現在的web server又不是只給瀏覽器用,已經完全地超出了html伺服器的範疇了。

http協議對get和post都沒有對長度的限制?

http協議明確地指出了,http頭和body都沒有長度的要求。而對於url長度上的限制,有兩方面的原因造成:

1. 瀏覽器。據說早期的瀏覽器會對url長度做限制。據說ie對url長度會限制在2048個字元內(流傳很廣,而且無數同事都表示認同)。但我自己試了一下,我構造了90k的url通過ie9訪問live.com,是正常的。網上的東西,哪怕是wikipedia上的,也不能信。

2. 伺服器。url長了,對伺服器處理也是一種負擔。原本乙個會話就沒有多少資料,現在如果有人惡意地構造幾個幾m大小的url,並不停地訪問你的伺服器。伺服器的最大併發數顯然會下降。另一種攻擊方式是,把告訴伺服器content-length是乙個很大的數,然後只給伺服器發一點兒資料,嘿嘿,伺服器你就傻等著去吧。哪怕你有超時設定,這種故意的次次訪問超時也能讓伺服器吃不了兜著走。有鑑於此,多數伺服器出於安全啦、穩定啦方面的考慮,會給url長度加限制。但是這個限制是針對所有http請求的,與get、post沒有關係。

這個貌似聽著對點吧。

3.對於安全不安全講。

get:

.所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,get請求一般不應產生***。就是說,它僅僅是獲取資源資訊,就像資料庫查詢一樣,不會修改,增加資料,不會影響資源的狀態。 

* 注意:這裡安全的含義僅僅是指是非修改資訊。

post的安全性要比get的安全性高。注意:這裡所說的安全性和上面get提到的「安全」不是同個概念。上面「安全」的含義僅僅是不作資料修改,而這裡安全的含義是真正的security的含義,比如:通過get提交資料,使用者名稱和密碼將明文出現在url上,因為(1)登入頁面有可能被瀏覽器快取, (2)其他人檢視瀏覽器的歷史紀錄,那麼別人就可以拿到你的賬號和密碼了,除此之外,使用get提交資料還可能會造成cross-site request forgery攻擊 .

看出來區別了吧

看到一位達人寫的,非常的不錯,於是摘抄了過來,原始位址為:

SpringMVC中post和get的區別

這是一篇我在csdn上的第一篇部落格,請大家多多支援。在前面我先宣告 這篇文章的內容基本上都是網上各部落格的,我只是整理一下,給需要的人梳理一下而已。首先先放個人覺得比較好的關於post和get的區別的分析的鏈結 在講區別前先講一下 requestbody。requestbody主要用來接收前端傳遞...

在http請求中,get和post有什麼區別

世界上並沒有完美的程式,但是我們並不因此而沮喪,因為寫程式就是乙個不斷追求完美的過程。get?post?在做 開發時,大家經常會使用http的get與post方法,但是這兩個method有什麼區別呢?在說區別之前,大家要明白一點,get和post都是基於http協議的,所以本質上是一致的。因此區別是...

HTTP中get和post區別

記得剛開始學習web技術的時候老師教我們的get和post區別是什麼 1.get用於獲取資料 post用於提交資料 2.get攜帶的資料大小比post少 3.get不安全 post安全 當開始找工作的時候面試官問我這倆的區別的時候我很自信的重複了之前老師講的區別 面試官問 除了get和post還有其...