1. 程式人生 > >30.get和post的區別

30.get和post的區別

request 個數 表單 意思 size 數據庫查詢 text -s 接收

POST和GET的區別

Http定義了與服務器交互的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網絡上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。到這裏,大家應該有個大概的了解了,GET一般用於獲取/查詢資源信息,而POST一般用於更新資源信息。

1、原理不同:

一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;在FORM表單中,可以通過設置Method指定提交方式為GET或者POST提交方式,默認為GET提交方式。HTTP定義了與服務器交互的不同方式,其中最基本的四種:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被稱為安全方法,因為使用GET和HEAD的HTTP請求不會產生什麽動作。不會產生動作意味著GET和HEAD的HTTP請求不會在服務器上產生任何結果。但是安全方法並不是什麽動作都不產生,這裏的安全方法僅僅指不會修改信息。根據HTTP規範,POST可能會修改服務器上的資源的請求。

get是從服務器上獲取數據,post是向服務器傳送數據。

get 和 post只是一種傳遞數據的方式,get也可以把數據傳到服務器,他們的本質都是發送請求和接收結果。只是組織格式和數據量上面有差別,http協議裏面有介紹

2、數據量:

GET傳送的數據量較小,不能大於2KB。POST傳送的數據量較大,一般默認為不受限制。 只不過要修改form裏面的那個type參數

3、安全性、效率:

傳統的比較都是覺得GET安全性非常低,POST安全性較高。因為GET請求的數據會暴露在地址欄中,而POST請求則不會。但是GET的執行效率比POST方法好。

4. 對於get方式:

服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。

5.get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。

post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
因為get設計成傳輸小數據,而且最好是不修改服務器的數據,所以瀏覽器一般都在地址欄裏面可以看到,但post一般都用來傳遞大數據,或比較隱私的數據,所以在地址欄看不到,能不能看到不是協議規定,是瀏覽器規定的。

前言

做Web開發就一定會涉及到瀏覽器和服務器的交互,所以了解瀏覽器和服務器交互的方式就尤為重要。從接觸B/S開始就已經接觸到了get和post,但是對它們的了解確實不深入。在後來不斷的做項目過程中,對它們不斷接觸中發現,以前的了解真的是太淺了。本篇博客就探討一下,GET和POST的區別。

HTTP協議

說道GET和POST,就不得不提HTTP協議,因為瀏覽器和服務器的交互是通過HTTP協議執行的,而GET和POST也是HTTP協議中的兩種方法。

HTTP全稱為Hyper Text Transfer Protocol,中文翻譯為超文本傳輸協議,目的是保證瀏覽器與服務器之間的通信。HTTP的工作方式是客戶端與服務器之間的請求-應答協議。


技術分享圖片

技術分享圖片

HTTP協議中定義了瀏覽器和服務器進行交互的不同方法,基本方法有4種,分別是GET,POST,PUT,DELETE。這四種方法可以理解為,對服務器資源的查,改,增,刪。

GET:從服務器上獲取數據,也就是所謂的查,僅僅是獲取服務器資源,不進行修改。

POST:向服務器提交數據,這就涉及到了數據的更新,也就是更改服務器的數據。

PUT:PUT的英文含義是放置,也就是向服務器新添加數據,就是所謂的增。

DELETE:從字面意思也能看出,這種方式就是刪除服務器數據的過程。

GET交互

1、GET交互方式是從服務器上獲取數據,而並非修改數據,所以GET交互方式是安全的。就像數據庫查詢一樣,從數據庫查詢數據,並不會影響數據庫的數據信息,對數據庫來說,也就是安全的。


技術分享圖片



2、GET交互方式是冪等的,冪等是一個數學概念,冪等函數就是可以使用相同參數重復執行,並且能獲得相同結果的函數。在GET交互這裏就是,對同一個URL的多個請求,得到的結果是相同的。就像數據庫查詢,不同的數據庫連接對同一個數據庫表用相同條件查詢時,得到的結果也是一樣的。


技術分享圖片

POST交互

1、POST交互是可以修改服務器數據的一種方式,涉及到信息的修改,就會有安全問題。就像數據庫的更新,Update一個數據庫表時,如果條件沒有寫對,就可能把不需要修改的數據給修改了,得到的數據就是錯誤的了。

2、一般的POST交互是必須要用到表單的,但是表單提交的默認方法是GET,如果改為POST方式,就需要修改表單提交時的Method。

兩者的區別

GET方式:

1、GET方式是以實體的方式得到由請求URL所指定資源的信息,如果請求URL只是一個數據產生過程,那麽最終要在響應實體中返回的是處理過程的結果所指向的資源,而不是處理過程的描述。也就是說,GET的到的信息是資源,而不是資源的處理過程。

2、請的求的數據會附加在URL之後,以?分隔URL和傳輸數據,多個參數用&連接。URL編碼格式采用的是ASCII編碼,而不是Unicode,即所有的非ASCII字符都要編碼之後再傳輸。

3、因為URL的長度限制,GET方式傳輸的數據大小有所限制,傳送的數據量不超過2KB。

4、GET方式服務器端用Request.QueryString獲取變量的值。

5、GET方式傳輸的參數安全性低,因為傳輸的數據會顯示在請求的URL中。

POST方式:

1、用來向目的服務器發出請求,要求它接收被附在請求後的實體,並把它當做請求隊列中請求URL所指定資源的附加新子項。

2、POST方式將表單內各個字段和內容放置在HTML HEADER中一起傳送到Action屬性所指定的URL地址,用戶是看不到這個過程的。

3、POST方式傳送的數據量比較大,一般被默認為沒有限制,但是根據IIS的配置,傳輸量也是不同的。

4、POST方式在服務器端用Request.Form獲取提交的數據。

5、POST方式傳輸的數據安全性較高,因為數據傳輸不是明顯顯示的。

總結

POST和GET方式的安全性是相對的,另外也要看是從哪個角度來看的。從數據傳輸過程方面來看,POST方式是更加安全的,但是從對服務器數據的操作來看,POST方式的安全性又是比較低的。即使是傳輸過程用POST來執行,安全性也是相對的,如果了解HTTP協議漏洞,通過攔截發送的數據包,同樣可以修改交互數據,所以這裏的安全不是絕對的。

30.get和post的區別