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用于向伺服器送出資料,比如增删改資料等操作。
