post與get區別

post與get區別

本文參考:http://www.javashuo.com/article/p-wzybruya-kz.htmlsegmentfault

簡單介紹

get和post是HTTP與服務器交互的方式,瀏覽器

說到方式,有:postdeleteputget安全

他們的做用分別是對服務器資源的增、刪、改、查。服務器

因此,get是獲取數據,post是修改數據。併發

還有head :相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭post

trace: 回顯服務器收到的請求,主要用於測試或診斷性能

options: 容許客戶端查看服務器的性能測試

connect:HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。編碼

區別分析

  1. get把請求的數據放在url上,即HTTP協議頭上,其格式爲:以?分割URL和傳輸數據,參數之間以&相連。數據若是是英文字母/數字,原樣發送,若是是空格,轉換爲+,若是是中文/其餘字符,則直接把字符串用BASE64加密,及%加上字符串的 16進制ASCII碼。
  2. get將參數接在URL後面,post放在body只是語法規範。get也能夠將參數放在body裏面,post接在URL後面
  3. get提交的數據最大是2k(原則上url長度無限制,那麼get提交的數據也沒有限制咯?限制實際上取決於瀏覽器,(大多數)瀏覽器一般都會限制url長度在2K個字節,即便(大多數)服務器最多處理64K大小的url。也沒有卵用。)。
  4. post理論上沒有限制。實際上IIS4中最大量爲80KB,IIS5中爲100KB。
  5. GET產生一個TCP數據包,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);
  6. POST產生兩個TCP數據包,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。(不是全部的POST的都發送倆個TCP包,火狐瀏覽器就一個)
  7. GET在瀏覽器回退時是無害的,POST會再次提交請求。
  8. GET產生的URL地址能夠被Bookmark,而POST不能夠。
  9. GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
  10. GET請求只能進行url編碼,而POST支持多種編碼方式。
  11. GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。
  12. GET只接受ASCII字符的參數的數據類型,而POST沒有限制

建議:

  1. get方式的安全性較Post方式要差些,包含機密信息的話,建議用Post數據提交方式;
  2. 在作數據查詢時,建議用Get方式;而在作數據添加、修改或刪除時,建議用Post方式;
相關文章
相關標籤/搜索