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交互

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






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



 安全

POST交互

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

二、通常的POST交互是必需要用到表單的,可是表單提交的默認方法是GET,若是改成POST方式,就須要修改表單提交時的Method。
 服務器

二者的區別

GET方式:

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

二、請的求的數據會附加在URL以後,以?分隔URL和傳輸數據,多個參數用&鏈接。URL編碼格式採用的是ASCII編碼,而不是Unicode,即全部的非ASCII字符都要編碼以後再傳輸。

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

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

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

POST方式:

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

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

三、POST方式傳送的數據量比較大,通常被默認爲沒有限制,可是根據IIS的配置,傳輸量也是不一樣的。

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

五、POST方式傳輸的數據安全性較高,由於數據傳輸不是明顯顯示的。
 函數

總結

POST和GET方式的安全性是相對的,另外也要看是從哪一個角度來看的。從數據傳輸過程方面來看,POST方式是更加安全的,可是從對服務器數據的操做來看,POST方式的安全性又是比較低的。即便是傳輸過程用POST來執行,安全性也是相對的,若是瞭解HTTP協議漏洞,經過攔截髮送的數據包,一樣能夠修改交互數據,因此這裏的安全不是絕對的。post

相關文章
相關標籤/搜索