淺析 Get 和 Post 的區別

基本請求簡介

Http 定義了與服務器交互的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。
GET,POST,PUT,DELETE就對應着對這個資源的查,改,增,刪4個操作。到這裏,大家應該有個大概的瞭解了,GET一般用於獲取/查詢資源信息,而POST一般用於更新資源信息。

URL 簡介

URL 全稱是資源描述符,我們可以這樣認爲:一個URL地址,它用於描述一個網絡上的資源。
URL 的編碼格式採用的是 ASCII 碼,而不是 Unicode,這也就是說你不能在 Url 中包含任何非 ASCII 字符,所有非 ASCII 字符均需要編碼再傳輸,關於 Url 編碼可參考:http://kb.cnblogs.com/page/133765/

Get 和 Post 的區別:

1 形式上:

(1) Get 的請求參數放在 URL 後面(把數據放置在請求行(request line)中),並且第一個參數用 ? 拼接,後面從第二個參數開始,直到最後一個,用 & 分開,例如https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1
(2) Post 的參數是放在請求體裏面;
因此,GET提交的數據會在地址欄中顯示出來,而POST提交,地址欄不會改變。

2 傳輸數據的大小

首先聲明:HTTP協議沒有對傳輸的數據大小進行限制,HTTP協議規範也沒有對URL長度進行限制。
所以:”GET方式提交的數據最多隻能是1024字節,理論上POST沒有限制,可傳較大量的數據“?
其實這樣說是錯誤的,不準確的(我也一度被誤導了,too young to simple)
實際開發中存在的限制主要有:
(1) GET: 特定瀏覽器對URL長度有限制,例如 IE 對 URL 長度的限制是2083字節( 2K+35 )。對於其他瀏覽器,如 Netscape、FireFox 等,其限制取決於操作系統的支持。因此對於 GET 提交時,傳輸數據就會受到URL 長度的限制。
(2) POST: 由於不是通過 URL 傳值,理論上數據不受限。但實際各個 WEB 服務器會規定對 post 提交數據大小進行限制,Apache、IIS6 都有各自的配置。

3 安全性

POST的安全性要比GET的安全性高。GET 的參數是暴露在地址欄的,並且有緩存(比如登錄界面),其他人查看瀏覽器的歷史紀錄,就可以從緩存中得到登錄的賬號和密碼等敏感數據;而 POST 提交的記錄是沒有緩存的。

4 其他

對於 GET 方式,服務端用 Request.QueryString 獲取變量的值,對於POST 請求方式,服務端用 Request.Form 獲取提交的數據。
POST 需要明確的指定方法, GET 不需要,並且默認就是 GET 請求。

總結:

記錄 GET POST
後退/刷新 無害 數據會被重新提交(瀏覽器應該告知用戶數據會被重新提交)。
書籤 可收藏爲書籤 不可收藏爲書籤
緩存 能被緩存 不能緩存
歷史 參數保留在瀏覽器歷史中。 參數不會保存在瀏覽器歷史中。
對數據長度的限制 URL 的長度由瀏覽器限制 數據長度由服務器限制
對數據類型的限制 只允許 ASCII 字符。 沒有限制。也允許二進制數據。
安全性 GET 的安全性較差,因爲所發送的數據是 URL 的一部分。 POST 比 GET 更安全,因爲參數不會被保存在瀏覽器歷史或 web 服務器日誌中。
可見性 數據在 URL 中對所有人都是可見的。 數據不會顯示在 URL 中。

最後,對各個瀏覽器對 URL 的限制

瀏覽器 最大字節數
IE 2083
firefox 65,536
chrome 8182
360極速瀏覽器 2118
Safari 80,000
Opera 190,000

參考博客/資料:

http://blog.csdn.net/gideal_wang/article/details/4316691
http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
http://www.baiwar.com/post/the-maximum-length-of-the-url-in-the-browser-get-request-limits.html
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
http://blog.csdn.net/yang_5/article/details/8174889

說明:

本篇博客屬於自己的理解,如有錯誤之處,歡迎拍磚。謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章