GET和POST請求的區別

GET請求html

GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
注意最後一行是空行

POST請求web

POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive



name=Professional%20Ajax&publisher=Wiley

一、GET提交,請求的數據會附在URL以後(就是把數據放置在HTTP協議頭中),以?分割URL和傳輸數據,多個參數用&鏈接;例 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。若是數據是英文字母/數字,原樣發送,若是是空格,轉換爲+,若是是中文/其餘字符,則直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX爲該符號以16進製表示的ASCII。瀏覽器

POST提交:把提交的數據放置在是HTTP包的包體中。上文示例中紅色字體標明的就是實際的傳輸數據緩存

所以,GET提交的數據會在地址欄中顯示出來,而POST提交,地址欄不會改變
二、傳輸數據的大小:首先聲明:HTTP協議沒有對傳輸的數據大小進行限制,HTTP協議規範也沒有對URL長度進行限制。安全

而在實際開發中存在的限制主要有:服務器

GET:特定瀏覽器和服務器對URL長度有限制,例如 IE對URL長度的限制是2083字節(2K+35)。對於其餘瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於操做系 統的支持。網絡

所以對於GET提交時,傳輸數據就會受到URL長度的 限制。數據結構

POST:因爲不是經過URL傳值,理論上數據不受 限。但實際各個WEB服務器會規定對post提交數據大小進行限制,Apache、IIS6都有各自的配置。app

三、安全性post

POST的安全性要比GET的安全性高。好比:經過GET提交數據,用戶名和密碼將明文出如今URL上,由於(1)登陸頁面有可能被瀏覽器緩存;(2)其餘人查看瀏覽器的歷史紀錄,那麼別人就能夠拿到你的帳號和密碼了,除此以外,使用GET提交數據還可能會形成Cross-site request forgery攻擊

四、Http get,post,soap協議都是在http上運行的

(1)get:請求參數是做爲一個key/value對的序列(查詢字符串)附加到URL上的
查詢字符串的長度受到web瀏覽器和web服務器的限制(如IE最多支持2048個字符),不適合傳輸大型數據集同時,它很不安全

(2)post:請求參數是在http標題的一個不一樣部分(名爲entity body)傳輸的,這一部分用來傳輸表單信息,所以必須將Content-type設置爲:application/x-www-form- urlencoded。post設計用來支持web窗體上的用戶字段,其參數也是做爲key/value對傳輸。
可是:它不支持複雜數據類型,由於post沒有定義傳輸數據結構的語義和規則。

(3)soap:是http post的一個專用版本,遵循一種特殊的xml消息格式
Content-type設置爲: text/xml 任何數據均可以xml化。

Http協議定義了不少與服務器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用於描述一個網絡上的資源,而HTTP中的GET, POST, PUT, DELETE就對應着對這個資源的查,改,增,刪4個操做。 咱們最多見的就是GET和POST了。GET通常用於獲取/查詢資源信息,而POST通常用於更新資源信息.

咱們看看GET和POST的區別

  1. GET提交的數據會放在URL以後,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數據放在HTTP包的Body中.
  2. GET提交的數據大小有限制(由於瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制.

  3. GET方式須要使用Request.QueryString來取得變量的值,而POST方式經過Request.Form來獲取變量的值。
  4. GET方式提交數據,會帶來安全問題,好比一個登陸頁面,經過GET方式提交數據時,用戶名和密碼將出如今URL上,若是頁面能夠被緩存或者其餘人能夠訪問這臺機器,就能夠從歷史記錄得到該用戶的帳號和密碼.

相關連接

相關文章
相關標籤/搜索