http協(xié)議類

一、HTTP協(xié)議的主要特點
1、簡單快速 2、靈活 3、無連接 4、無狀態(tài)

二、HTTP報文的組成部分
請求報文:請求行、請求頭、空行、請求體
響應報文:狀態(tài)行、響應頭、空行、相應體

三、HTTP方法
GET-------------------> 獲取資源
POST ------------------> 傳輸資源
PUT-------------------> 更新資源
DELETE-------------------> 刪除資源
HEAD-------------------> 獲取報文首部
OPTIONS------------------->預檢請求
注意:對那些可能對服務器數(shù)據(jù)產(chǎn)生副作用的 HTTP 請求方法(特別是 GET 以外的 HTTP 請求,或者搭配某些 MIME 類型的 POST 請求),瀏覽器必須首先使用 OPTIONS 方法發(fā)起一個預檢請求(preflight request),從而獲知服務端是否允許該跨域請求。服務器確認允許之后,才發(fā)起實際的 HTTP 請求。

四、POST與GET的區(qū)別
GET在瀏覽器回退時是無害的,而POST會再次提交請求
GET產(chǎn)生的URL地址可以被收藏,而POST不可以
GET請求會被瀏覽器主動緩存,而POST不會,除非手動設置
GET請求只能進行URL編碼,而POST支持多種編碼方式
GET請求參數(shù)會被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會被保留
GET請求在RUL中傳送的參數(shù)是有長度限制的,而POST沒有限制
對參數(shù)的數(shù)據(jù)類型,GET只接受ASCII字符,而POST沒有限制
GET比POST更不安全,因為參數(shù)直接暴露在URL上,所以不能用來傳遞敏感信息
GET參數(shù)通過URL傳遞,POST放置在Request body中

五、HTTP狀態(tài)碼
1xx:指示信息 — 表示請求已接收,繼續(xù)處理
2xx:成功 — 表示請求已被成功接收
3xx:重定向 — 要完成請求必須進行更進一步的操作
4xx:客戶端錯誤 — 請求有語法錯誤或請求無法實現(xiàn)
5xx:服務器錯誤 — 服務器未能實現(xiàn)合法的請求


200 OK:客戶端請求成功
206 Partial Content:客戶發(fā)送了一個帶有Range頭的GET請求,服務器完成了它
301 Moved Permanently:所請求的頁面已經(jīng)轉(zhuǎn)移至新的URL
302 Found:所請求的頁面已經(jīng)臨時轉(zhuǎn)移至新的URL
304 Not Modified:客戶端有緩沖的文檔并發(fā)出了一個條件性的請求,服務器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用
400 Bad Request:客戶端請求有語法錯誤,不能被服務器所理解
401 Unauthorized:請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden:對被請求頁面的訪問被禁止
404 Not Found:請求資源不存在
500 Internal Server Error:服務器發(fā)生不可預期的錯誤原來緩沖的文檔還可以繼續(xù)使用
503 Server Unavailable:請求未完成,服務器臨時過載或當機,一段時間后可能恢復正常。

六、什么是持久連接
HTTP協(xié)議采用"請求—應答"模式,當使用普通模式,即非Keep-Alive模式時,每個請求/應答客戶和都完全都要新建一個連接,完成之后立即斷開連接(HTTP協(xié)議為無連接的協(xié)議)
當使用Keep-Alive模式(由稱持久連接、連接重用)時,Keep-Alive功能使客戶端到服務器端的連接持續(xù)有效,當出現(xiàn)對服務器的后繼請求時,Keep-Alive功能避免了建立或者重新建立連接

七、什么是管線化
在使用持久連接的情況下,某個連接上消息的傳遞類似于
請求1 -> 響應1 -> 請求2 -> 響應2 -> 請求3 -> 響應3
某個連接上的消息變成了類似這樣
請求1 -> 請求2 -> 請求3 -> 響應1 -> 響應2 -> 響應3

管線化機制通過持久連接完成,僅HTTP/1.1支持此技術(shù)
只有GET和HEAD請求可以進行管線化,而POST則有所限制
初次創(chuàng)建連接時不應啟動管線機制,因為對方(服務器端)不一定支持HTTP/1.1版本的協(xié)議
管線化不會影響響應到來的吮吸,如上面的例子所示,響應返回的吮吸并未改變
HTTP/1.1要求服務器端支持管線化,但并不要求服務器端也對響應進行管線化處理,只是要求對于管線化的請求不失敗即可
由于上面提到的服務器端問題,開啟管線化很可能并不會帶來大幅度的性能提升,而且很多服務器端和代理程序?qū)芫€化的支持并不好,因此現(xiàn)代瀏覽器如Chrome 和 Firefox 默認并未開啟管線化支持

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容