1. 程式人生 > >瀏覽器和伺服器互動方式GET和POST的區別

瀏覽器和伺服器互動方式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協議漏洞,通過攔截髮送的資料包,同樣可以修改互動資料,所以這裡的安全不是絕對的。