http中post 和 get 請求方法區別

前言

做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協議漏洞,通過攔截髮送的數據包,同樣可以修改交互數據,所以這裏的安全不是絕對的。


註明文章轉載地址爲:http://blog.csdn.net/wswit/article/details/50776060

如有冒犯請聯繫刪除!謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章