(1)post更安全(不會作為url的一部分,不會被快取、儲存在伺服器日誌、以及瀏覽器瀏覽記錄中)
(2)post傳送的資料更大(get有url長度限制)
(3)post能傳送更多的資料型別(get只能傳送ascii字元)
(4)post比get慢
(5)post用於修改和寫入資料,get一般用於搜尋排序和篩選之類的操作(**,支付寶的搜尋查詢都是get提交),目的是資源的獲取,讀取資料 。
但是如果面試只簡單的回答上面的五點,面試官肯定不滿意,因為都說是最一般和大家都知道的,所以我們應該從原理是分析一下優缺點。
1.post請求包含更多的請求頭
因為post需要在請求的body部分包含資料,所以會多了幾個資料描述部分的首部字段(如:content-type),這其實是微乎其微的。
2.最重要的一條,post在真正接收資料之前會先將請求頭髮送給伺服器進行確認,然後才真正傳送資料
post請求的過程:
(1)瀏覽器請求tcp連線(第一次握手)
(2)伺服器答應進行tcp連線(第二次握手)
(3)瀏覽器確認,並傳送post請求頭(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)
(4)伺服器返回100 continue響應
(5)瀏覽器傳送資料
(6)伺服器返回200 ok響應
get請求的過程:
(1)瀏覽器請求tcp連線(第一次握手)
(2)伺服器答應進行tcp連線(第二次握手)
(3)瀏覽器確認,並傳送get請求頭和資料(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)
(4)伺服器返回200 ok響應
也就是說,目測get的總耗是post的2/3左右。
3.get會將資料快取起來,而post不會
可以做個簡短的測試,使用ajax採用get方式請求靜態資料(比如html頁面,)的時候,如果兩次傳輸的資料相同,第二次以後消耗的時間將會在10ms以內(chrome測試),而post每次消耗的時間都差不多。經測試,chrome和firefox下如果檢測到get請求的是靜態資源,則會快取,如果是資料,則不會快取,但是ie什麼都會快取起來,當然,應該沒有人用post去獲取靜態資料吧,反正我是沒見過。
Http的GET和POST請求
1 http頭資訊 request line 請求型別 訪問資源 http版本 headers http頭訊息 r n request body 任意其他資料body get請求樣例 post請求樣例 2 get和post區別 get主要從伺服器上獲取資料 post主要向伺服器傳送資料 get使用r...
http的get和post請求
http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url全稱是資源描述符,我們可以這樣認為 乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應...
Http的get和post請求
httpclient只能以程式設計的方式通過其api用於傳輸和接受http訊息 通過如下3步來訪問http資源 1.建立httpget或httppost物件,將要請求的url通過構造方法傳入httpget或httppost物件。2.使用defaulthttpclient類的execute方法傳送ht...