http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。url全稱是資源描述符,我們可以這樣認為:乙個url位址,它用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的 查,改,增,刪 4個操作。到這裡,大家應該有個大概的了解了,get一般用於獲取/查詢資源資訊,而post一般用於更新資源資訊。
最基本的解釋:get是向伺服器端請求資料,post是提交資料。
操作方式
資料位置
明文密文
資料安全
長度限制
應用場景
gethttp包頭
明文不安全
長度較小
查詢資料
post
http正文
可明可密
安全支援較大資料傳輸
修改資料
get在瀏覽器回退時是無害的,而post會再次提交請求。
get產生的url位址可以被bookmark,而post不可以。
get請求會被瀏覽器主動cache,而post不會,除非手動設定。
get請求只能進行url編碼,而post支援多種編碼方式。
get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留。
get請求在url中傳送的引數是有長度限制的,而post麼有。
對引數的資料型別,get只接受ascii字元,而post沒有限制。
get比post更不安全,因為引數直接暴露在url上,所以不能用來傳遞敏感資訊。
get引數通過url傳遞,post放在request body中。
get和post本質上就是tcp鏈結,並無差別。但是由於http的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。
簡單的說:get產生乙個tcp資料報;post產生兩個tcp資料報。即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不會。
可以做個簡短的測試,使用ajax採用get方式請求靜態資料(比如html頁面,)的時候,如果兩次傳輸的資料相同,第二次以後消耗的時間將會在10ms以內(chrome測試),而post每次消耗的時間都差不多。經測試,chrome和firefox下如果檢測到get請求的是靜態資源,則會快取,如果是資料,則不會快取,但是ie什麼都會快取起來
http協議並未規定get和post的長度限制
get的最大長度限制是因為瀏覽器和web伺服器限制了url的長度
不同的瀏覽器和web伺服器,限制的最大長度不一樣
要支援ie,則最大長度為2083byte,若支援chrome,則最大長度8182byte
get和post的區別
在b s應用程式中,前台與後台的資料互動,都是通過html中form表單完成的。form提供了兩種資料傳輸的方式 get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,web容器已經遮蔽了二者的一些差異,但是了解二者的...
post和get的區別?
1.get是從伺服器上獲取資料,post是向伺服器傳送資料。get 和 post只是一種傳遞資料的方式,get也可以把資料傳到伺服器,他們的本質都是傳送請求和接收結果。只是組織格式和資料量上面有差別,http協議裡面有介紹。2.get是把引數資料佇列加到提交表單的action屬性所指的url中,值和...
post和get的區別
兩者的主要區別在資料傳送方式和接收方式上 1 在客戶端 get方式是通過url提交資料 post方式是提交後位址列是不變的 2 在伺服器端 get方式是利用解析位址列字串的方式,伺服器獲取get提交的值 post方式是以form的形式提交表單引數 一般來說,盡量避免使用get方式提交表單,因為有可能...