TTP中get與post的區別

  1. 瞭解歷史

    get和post是HTTP與服務器交互的方式, 
    說到方式,其實總共有四種:put,delete,post,get。 
    他們的作用分別是對服務器資源的增,刪,改,查。 
    所以,get是獲取數據,post是修改數據。

    但是,現在大家都不這麼幹了! 
    只用一個方式就可以做增刪查減的操作。 
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  2. 區別分析

    get把請求的數據放在url上,即HTTP協議頭上,其格式爲: 
    以?分割URL和傳輸數據,參數之間以&相連。 
    數據如果是英文字母/數字,原樣發送, 
    如果是空格,轉換爲+, 
    如果是中文/其他字符,則直接把字符串用BASE64加密,及“%”加上“字符串的16進制ASCII碼”。 
    post把數據放在HTTP的包體內(requrest body)。

    get提交的數據最大是2k(原則上url長度無限制,那麼get提交的數據也沒有限制咯?限制實際上取決於瀏覽器,(大多數)瀏覽器通常都會限制url長度在2K個字節,即使(大多數)服務器最多處理64K大小的url。也沒有卵用。)。 
    post理論上沒有限制。實際上IIS4中最大量爲80KB,IIS5中爲100KB。

    GET產生一個TCP數據包,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據); 
    POST產生兩個TCP數據包,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。

    GET在瀏覽器回退時是無害的,POST會再次提交請求。

    GET產生的URL地址可以被Bookmark,而POST不可以。

    GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。

    GET請求只能進行url編碼,而POST支持多種編碼方式。

    GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。

    GET只接受ASCII字符的參數的數據類型,而POST沒有限制

    那麼,post那麼好爲什麼還用get?get效率高!。

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


1,http中,GET用於信息獲取,而且是安全的和冪等的。

(1).所謂安全的意味着該操作用於獲取信息而非修改信息。換句話說,GET 請求一般不應產生副作用。就是說,它僅僅是獲取資源信息,就像數據庫查詢一樣,不會修改,增加數據,不會影響資源的狀態。

* 注意:這裏安全的含義僅僅是指是非修改信息。

(2).冪等的意味着對同一URL的多個請求應該返回同樣的結果。

2,http中,POST是用於修改服務器上的資源的請求。


說完原理性的問題,我們從表面上來看看GET和POST的區別:

1. get是從服務器上獲取數據,post是向服務器傳送數據。 
get 和 post只是一種傳遞數據的方式,get也可以把數據傳到服務器,他們的本質都是發送請求和接收結果。只是組織格式和數據量上面有差別,http協議裏面有介紹
  2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。 
因爲get設計成傳輸小數據,而且最好是不修改服務器的數據,所以瀏覽器一般都在地址欄裏面可以看到,但post一般都用來傳遞大數據,或比較隱私的數據,所以在地址欄看不到,能不能看到不是協議規定,是瀏覽器規定的。
3. 對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。 
沒明白,怎麼獲得變量和你的服務器有關,和get或post無關,服務器都對這些請求做了封裝
  4. get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB。 
post基本沒有限制,我想大家都上傳過文件,都是用post方式的。只不過要修改form裏面的那個type參數
  5. get安全性非常低,post安全性較高。 
如果沒有加密,他們安全級別都是一樣的,隨便一個監聽器都可以把所有的數據監聽到。

發佈了45 篇原創文章 · 獲贊 32 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章