最近對post和get什么時候使用 和 應該怎么使用 他倆的區別 有了一些疑問
根據本人的了解 post是對數據進行了封裝保護 get是安全性較差的 可以看到數據的信息 post是用來改變數據比如說添加 修改 get是用來查詢和搜索的
所以進行了搜索和整合 也方便理解
當請求無副作用時(如進行搜索),便可使用GET方法;當請求有副作用時(如添加數據行),則用POST方法。
GET方法可能會產生很長的URL,或許會超過某些瀏覽器與服務器對URL長度的限制。
原文地址如下:http://bu-choreography.iteye.com/admin/blogs/new。
快速判斷:
如下情況使用GET方法:客戶端與服務端的交互像是一個提問(如查詢操作、搜索操作、讀操作)
如下情況使用POST方法:
1.交互是一個命令或訂單(order),比提問包含更多信息
2.交互改變了服務器端的資源並被用戶察覺,例如訂閱某項服務
3.用戶需要對交互產生的結果負責
根據HTTP協議規定,GET方法可以攜帶交互需要的所有數據,因此你會看到搜索百度或谷歌的時候,點擊搜索形成的URL包含了你剛才的搜索關鍵字,沒有安全需求的請求把信息放URL里沒關系,但是你訪問銀行網站的時候,不希望把賬戶、密碼這些放在URL里被人攔截是吧,所以HTTP設計了POST請求,他可以把請求信息放在HTTP請求里,具體格式這里不細說了,這樣你就不能簡單的從URL里找到賬戶、密碼了。
講完這些,是不是比較清楚了呢。
文章還例舉了幾個曾經的HTTP請求限制。
1.URI不能超過256個字符。這個限制在有些服務器里是存在的,有的服務器為了網絡安全,為了防止拒絕式攻擊會把URL字符限制在4000字符
2.你提交了GET請求,又馬山按了backspace鍵,會導致get方法被重新執行
3.你在一個頁面使用了安全協議,跳轉到了另一個使用不安全協議的頁面時,會導致安全數據泄漏給第二個頁面。
還有一種稍微官方的解釋 一些人可能不好理解 對於我來說更傾向於前面的一種
POST方法:
* 請求的結果有持續性的副作用,例如,數據庫內添加新的數據行。
* 若使用GET方法,則表單上收集的數據可能讓URL過長。
* 要傳送的數據不是采用7位的ASCII編碼。
若符合下列任一情況,則用GET方法:
* 請求是為了查找資源,HTML表單數據僅用來幫助搜索。
* 請求結果無持續性的副作用。
* 收集的數據及HTML表單內的輸入字段名稱的總長不超過1024個字符。