02 常見的誤區
3 http狀態碼附錄
http請求可以使用多種請求方法。
http1.0定義了三種請求方法: get, post 和 head方法。
http1.1新增了五種請求方法:options, put, delete, trace 和 connect 方法。
http2.0 新的二進位制格式(binary format),http1.x的解析是基於文字。基於文字協議的格式解析存在天然缺陷,文字的表現形式有多樣性,要做到健壯性考慮的場景必然很多,二進位制則不同,只認0和1的組合。基於這種考慮http2.0的協議解析決定採用二進位制格式,實現方便且健壯。
多路復用(multiplexing),即連線共享,即每乙個request都是是用作連線共享機制的。乙個request對應乙個id,這樣乙個連線上可以有多個request,每個連線的request可以隨機的混雜在一起,接收方可以根據request的 id將request再歸屬到各自不同的服務端請求裡面。
header壓縮,如上文中所言,對前面提到過http1.x的header帶有大量資訊,而且每次都要重**送,http2.0使用encoder來減少需要傳輸的header大小,通訊雙方各自cache乙份header fields表,既避免了重複header的傳輸,又減小了需要傳輸的大小。
http協議最常見的兩種方法get和post,這幾點答案其實有幾點並不準確
get和post誤區
針對上面常見的區別,如果面試的時候這麼說,肯定是有很大的毛病,剛在學校面試的時候也曾經囫圇吞棗地這樣說過,現在回過頭再想以前的錯誤認知,又有許多新的認識。
「用處:get常用於取回資料,post用於提交資料」
請求引數
get是querystring(僅支援urlencode編碼),post是放在body(支援多種編碼)
query引數是url的一部分,而get、post等是請求方法的一種,不管是哪種請求方法,都必須有url,而url的query是可選的,可有可無。
「請求引數長度限制:get請求長度最多1024kb,post對請求資料沒有限制」
這句話看上去實在沒毛病啊,菜鳥教程也是這樣說的啊。雖然字面意思上沒有錯誤,但是理解一定要正確。我想說的是get方法提交的url引數資料大小沒有限制,在http協議中沒有對url長度進行限制(不僅僅是querystring的長度),這個限制是特定的瀏覽器及伺服器對他的限制
下面就是對各種瀏覽器和伺服器的最大處理能力做一些說明
所以為了符合所有標準,url的最好不好超過最低標準的2083個字元(2k+35)。當然在做客戶端程式時,url並不展示給使用者,只是個程式呼叫,這時長度只收web伺服器的影響了。對於中文的傳遞,乙個漢字最終編碼後的字元長度是9個字元。
「post比get安全性要高」
這裡的安全是相對性,並不是真正意義上的安全,通過get提交的資料都將顯示到url上,頁面會被瀏覽器快取,其他人檢視歷史記錄會看到提交的資料,而post不會。另外get提交資料還可能會造成csrf攻擊。
這一點理解起來還是有一定難度的,實際上,不論哪一種瀏覽器,在傳送 post 的時候都沒有帶 expect 頭,server 也自然不會發 100 continue。通過抓包發現,儘管會分兩次,body 就是緊隨在 header 後面傳送的,根本不存在『等待伺服器響應』這一說。
從另乙個角度說,tcp 是傳輸層協議。別人問你應用層協議裡的 get 和 post 有啥區別,你回答說這倆在傳輸層上傳送資料的時候不一樣,確定別人不抽你?
參考資料:
301 moved permanently:
所請求的頁面已經轉移至新的url
302 found:
所請求的頁面已經臨時轉移至新的url。
303 see other:
所請求的頁面可在別的url下被找到。
304 not modified:
未按預期修改文件。客戶端有緩衝的文件並發出了乙個條件性的請求(一般是提供if-modified-since頭表示客戶只想比指定日期更新的文件)。伺服器告訴客戶,原來緩衝的文件還可以繼續使用。
305 use proxy:
客戶請求的文件應該通過location頭所指明的**伺服器提取。
306 unused:
此**被用於前一版本。目前已不再使用,但是**依然被保留。
307 temporary redirect:
被請求的頁面已經臨時移至新的url。
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方式提交表單,因為有可能...