1. 程式人生 > >POST和GET詳解

POST和GET詳解

靜態 方法 -m data ica 人文 ble 表單 部分

GET和POST


 Http定義了與服務器交互的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網絡上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。到這裏,大家應該有個大概的了解了,GET一般用於獲取/查詢資源信息,而POST一般用於更新資源信息。

1.區別(表現形式角度)

method GET POST
後退按鈕/刷新 無害(冪等) 數據會被重新提交
書簽 可收藏為書簽 不可收藏為書簽
緩存 能被緩存 不能緩存
編碼類型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。為二進制數據使用多重編碼
歷史 參數保留在瀏覽器歷史中 參數不會保存在瀏覽器歷史中
對數據長度的限制 有限制 無限制
對數據類型的限制 只允許 ASCII 字符 沒有限制。也允許二進制數據
安全性 與 POST 相比,GET 的安全性較差,因為所發送的數據是URL的一部分。在發送密碼或其他敏感信息時絕不要使用 GET POST 比 GET 更安全,因為參數不會被保存在瀏覽器歷史或 web 服務器日誌中
可見性 數據在 URL 中對所有人都是可見的 數據不會顯示在 URL 中

2.具體解釋

1.Get/Post後退或刷新(冪等):

比如在請求響應前失去連接,如果方法是冪等的,就可以放心地重發一次請求。這也是瀏覽器在後退/刷新時遇到POST會給用戶提示的原因:POST語義不是冪等的,所以在實際應用中要防止表單的重復提交。

冪等:冪等的意味著對同一URL的多個請求應該返回同樣的結果

2.Get/Post收藏書簽:

由於Get請求的參數都附著在URL上。POST把提交的數據則放置在是HTTP包的包體中。比如一個當前打開的淘寶網址為 ( Get ) :www.taobao.com?id=456&name=123  加入書簽中,下次可以照常打開這個頁面。如果這是一個Post請求獲得的商品頁面地址如:http://www.taobao.com 加入書簽後,下次打開或者發給別人看,別人只能打開只是淘寶網的首頁而已。

3.Get/Post緩存:

GET時默認可以復用前面的請求數據作為緩存結果返回,此時以完整的URL作為緩存數據的KEY。如果為了請求到新數據可以在url後隨意加一個參數,就會重新請去服務器請求資源。而post一般不會被這些緩存影響。

4.GET和POST長度的限制:

HTTP協議對URL長度是沒有限制的。GET是通過URL提交數據,因此GET可提交的數據量就跟URL所能達到的最大長度有直接關系。

5.GET和POST安全性:

1.GET是通過URL方式請求,可以直接看到,明文傳輸
2.POST是通過請求header請求,普通用戶是看不到請求的參數的(可以開發者工具或者抓包可以看到)     3.比如在評論別人文章時,使用post,如果使用get地址欄顯示:http://www.xxxx.com?uid=xx&content=xxxx,內容會直接顯示出來,如果別人把url復制一下就可以幫你評論那不是就亂套了( 不安全)。

3.總而言之

1.Get用於從服務器端獲取數據,包括靜態資源、動態數據展示等等。
2.POST用於向服務器提交數據,比如增刪改數據等操作。

POST和GET詳解