HTTP協議GET和POST請求的區別
瀏覽器中輸入網址訪問資源一般都是通過GET方式;在FORM提交中,可以通過Method指定提交方式為GET或者POST,預設為GET提交。
Http協議定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET、POST、PUT、DELETE。
URL全稱是資源描述符,可以認為一個URL地址用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查 ,改 ,增 ,刪 4個操作。
GET 和 POST請求方法
在客戶機和伺服器之間進行請求-響應時,最常被用到的方法是GET 和 POST。
- GET – 從指定的資源請求資料。
- POST – 向指定的資源提交要被處理的資料
GET一般用於獲取/查詢資源資訊,而POST一般用於更新資源資訊。
根據HTTP規範,GET用於資訊獲取,而且應該是安全的和冪等的 。
1.所謂安全的意味著該操作用於獲取資訊而非修改資訊。換句話說,GET請求一般不應產生副作用。就是說,它僅僅是獲取資源資訊,就像資料庫查詢一樣,不會修改,增加資料,不會影響資源的狀態。
2.冪等的意味著對同一URL的多個請求應該返回同樣的結果。
冪等 (idempotent、idempotence)是一個數學或計算機學概念,常見於抽象代數中。
冪等有以下幾種定義:
對於單目運算,如果一個運算對於在範圍內的所有的一個數多次進行該運算所得的結果和進行一次該運算所得的結果是一樣的,那麼我們就稱該運算是冪等的。比如絕對值運算就是一個例子,在實數集中,有abs(a) =abs(abs(a)) 。
對於雙目運算,則要求當參與運算的兩個值是等值的情況下,如果滿足運算結果與參與運算的兩個值相等,則稱該運算冪等,如求兩個數的最大值的函式,有在在實數集中冪等,即max(x,x) = x 。
GET 方法
請注意,查詢字串(名稱/值對)是在 GET 請求的 URL 中傳送的:
1
|
/test/demo_form.asp?name1=value1&name2=value2 |
有關 GET 請求的其他一些註釋:
- GET 請求可被快取
- GET 請求保留在瀏覽器歷史記錄中
- GET 請求可被收藏為書籤
- GET 請求不應在處理敏感資料時使用
- GET 請求有長度限制
- GET 請求只應當用於取回資料
POST 方法
請注意,查詢字串(名稱/值對)是在 POST 請求的 HTTP 訊息主體中傳送的:
1
2
3
|
POST /test/demo_form.asp HTTP/ 1.1
Host: test.com name1=value1&name2=value2 |
有關 POST 請求的其他一些註釋:
- POST 請求不會被快取
- POST 請求不會保留在瀏覽器歷史記錄中
- POST 不能被收藏為書籤
- POST 請求對資料長度沒有要求
比較 GET 與 POST
下面比較了GET 和 POST方法的一些區別
GET | POST | |
---|---|---|
後退按鈕/重新整理 | 無害 | 資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交)。 |
書籤 | 可收藏為書籤 | 不可收藏為書籤 |
快取 | 能被快取 | 不能快取 |
編碼型別 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。為二進位制資料使用多重編碼。 |
歷史 | 引數保留在瀏覽器歷史中。 | 引數不會儲存在瀏覽器歷史中。 |
對資料長度的限制 | 是的。當傳送資料時,GET 方法向 URL 新增資料;URL 的長度是受限制的(URL 的最大長度是 2048 個字元)。 | 無限制。 |
對資料型別的限制 | 只允許 ASCII 字元。 | 沒有限制。也允許二進位制資料。 |
安全性 |
與 POST 相比,GET 的安全性較差,因為所傳送的資料是 URL 的一部分。 在傳送密碼或其他敏感資訊時絕不要使用 GET ! |
POST 比 GET 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。 |
可見性 | 資料在 URL 中對所有人都是可見的。 | 資料不會顯示在 URL 中。 |
相關文章
- HTTP協議中請求方法的Get和PostHTTP協議
- http請求之get和post的區別HTTP
- HTTP協議類POST 和GET的區別HTTP協議
- http請求中get和post方法的區別HTTP
- Http get,post,soap協議的區別HTTP協議
- 淺談HTTP中GET和POST請求方式的區別HTTP
- http協議中,“get”和“post”的區別是什麼HTTP協議
- get和post請求的區別(面試)面試
- AJAX的POST和GET請求的區別
- JAVA中Get和Post請求的區別Java
- get請求和post請求的區別
- get與post的請求區別
- POST與GET請求區別
- 解析HTTP協議六種請求方法,get,head,put,delete,post有什麼區別HTTP協議delete
- SQL Server儲存過程模擬HTTP請求POST和GET協議SQLServer儲存過程HTTP協議
- 瞭解一下Http常見狀態碼、Http協議的工作特點和原理、Http請求Post與Get的區別HTTP協議
- Android Http請求框架一:Get 和 Post 請求AndroidHTTP框架
- GET和POST兩種基本請求方法的區別
- get請求和post請求區別詳解
- HTTP協議 GET和POST的左右互博HTTP協議
- Http協議中Get和Post的淺談HTTP協議
- HTTP協議中PUT和POST使用區別HTTP協議
- HTTP Get,Post請求詳解HTTP
- ajax 請求的時候 get 和 post 方式的區別?
- http中的get和post的區別HTTP
- http和https的區別/get和post的區別HTTP
- java傳送http的get、post請求JavaHTTP
- Java Http Get Post 請求工具類JavaHTTP
- HTTP中GET與POST的區別HTTP
- Get和Post請求詳解
- 【轉】怎麼用PHP傳送HTTP請求(POST請求、GET請求)?PHPHTTP
- GET和POST的區別?
- GET和POST的區別
- GET 和 POST 的區別
- POST 和 GET 的區別
- get和post區別
- java傳送GET和post請求Java
- PHP傳送POST和GET請求PHP