前端面試題(4)——HTTP協(xié)議類


  1. HTTP協(xié)議的主要特點(diǎn)
  2. HTTP報(bào)文的組成部分
  3. HTTP方法
  4. POST和GET的區(qū)別
  5. HTTP狀態(tài)碼
  6. 什么是持久連接
  7. 什么是管線化

一、HTTP協(xié)議的主要特點(diǎn)

  1. 簡(jiǎn)單快速:每個(gè)資源都是固定的,都有自己的一個(gè)url;
  2. 靈活:每一個(gè)HTTP協(xié)議中有一個(gè)頭部分,都有一個(gè)數(shù)據(jù)類型,通過一個(gè)HTTP協(xié)議就可以完成不同數(shù)據(jù)類型的傳輸;
  3. 無連接:連接一次就會(huì)斷掉,不會(huì)保持連接;
  4. 無狀態(tài):客戶端和服務(wù)端是兩種身份,單從HTTP協(xié)議上是不能區(qū)別兩次連接者的身份的;

二、HTTP報(bào)文的組成部分

  1. 請(qǐng)求報(bào)文
    • 請(qǐng)求行
      • HTTP方法
      • 頁(yè)面地址
      • HTTP協(xié)議以及版本
    • 請(qǐng)求頭
      • 一些key,value值,來告訴服務(wù)端要哪些內(nèi)容,要什么類型;
    • 空行
      • 告訴服務(wù)端請(qǐng)求頭結(jié)束了,接下來的內(nèi)容就是請(qǐng)求體了;
    • 請(qǐng)求體
  2. 響應(yīng)豹紋
    • 狀態(tài)行
    • 響應(yīng)頭
    • 空行
    • 響應(yīng)體

三、HTTP方法

  1. GET————獲取資源
  2. POST————傳輸資源
  3. PUT————更新資源
  4. DELETE————?jiǎng)h除資源
  5. HEAD————獲得報(bào)文首部

四、POST和GET的區(qū)別

  1. GET在瀏覽器回退時(shí)是無害的,而POST會(huì)再次提交請(qǐng)求(必須記住);
  2. GET產(chǎn)生的URL地址可以被收藏,而POST不可以;
  3. GET請(qǐng)求會(huì)被瀏覽器主動(dòng)緩存,而POST不會(huì),除非手動(dòng)設(shè)置(必須記住);
  4. GET請(qǐng)求只能進(jìn)行url編碼,而POST支持多種編碼方式;
  5. GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器的歷史記錄中,而POST中的參數(shù)不會(huì)被保留(必須記住);
  6. GET請(qǐng)求在URL中傳送的參數(shù)是有長(zhǎng)度限制的(一般是2k,不同瀏覽器限制長(zhǎng)度不同),而POST沒有限制(必須記住);
  7. 對(duì)參數(shù)的數(shù)據(jù)類型,GET只接受ASCII字符,而POST沒有限制;
  8. GET比POST更不安全,因?yàn)閰?shù)直接暴露在URL上,所以不能用來傳遞敏感信息;
  9. GET參數(shù)通過URL傳遞,POST放在Request body中(必須記住);

五、HTTP狀態(tài)碼

  1. 1XX:指示信息--表示請(qǐng)求已接受收,繼續(xù)處理;
  2. 2XX:成功--表示請(qǐng)求已被成功接受;
    • 200 OK:客戶端請(qǐng)求成功;
    • 206 Partial Content:客戶發(fā)送了一個(gè)帶有Range(范圍,例如0-10000字節(jié))頭的GET請(qǐng)求,服務(wù)器完成了它;
  3. 3XX:重定向--要完成請(qǐng)求必須進(jìn)行更進(jìn)一步的操作;
    • 301 Moved Permanently:所請(qǐng)求的頁(yè)面已經(jīng)轉(zhuǎn)移至新的url;
    • 302 Found:所請(qǐng)求的頁(yè)面已經(jīng)臨時(shí)轉(zhuǎn)移至新的url;
    • 304 Not Modified:客戶端有緩存的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求,服務(wù)器告訴客戶,原來緩存的文檔還可以繼續(xù)使用;
  4. 4XX:客戶端錯(cuò)誤--請(qǐng)求有語(yǔ)法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn);
    • 400 Bad Request:客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解;
    • 401 Unauthorized:請(qǐng)求未經(jīng)授權(quán),這個(gè)狀態(tài)代碼必須和Www-Authenticate報(bào)頭域一起使用;
    • 403 Forbidden:對(duì)被請(qǐng)求頁(yè)面的訪問被禁止;
    • 404 Not Found:請(qǐng)求資源不存在;
  5. 5XX:服務(wù)器錯(cuò)誤--服務(wù)器未能實(shí)合法的請(qǐng)求;
    • 500 Internal Server Error:服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤原來緩沖的文檔還可以繼續(xù)使用;
    • 503 Server Unavailable:請(qǐng)求未完成,服務(wù)器臨時(shí)過載或當(dāng)機(jī),一段時(shí)間后可能恢復(fù)正常;

六、持久連接(HTTP 1.1版本才支持,1.0版本是不支持的)

  1. HTTP協(xié)議采用"請(qǐng)求-應(yīng)答"模式,當(dāng)使用普通模式,即非Keep-Alive模式時(shí),每個(gè)請(qǐng)求/應(yīng)答客,戶和服務(wù)器都要新建一個(gè)連接,完成之后立即斷開連接(HTTP協(xié)議為無連接的協(xié)議);
  2. 當(dāng)使用Keep-Alive模式(又稱持久連接、連接重用)時(shí),Keep-Alive功能使客戶端到服務(wù)器端!的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(shí),Keep-Alive功能避免了建立或者重新建立連接;

七、管線化(我把請(qǐng)求打包一次給你傳輸過去,你也打包一次響應(yīng)過來)

  1. 理解:
    • 在使用持久連接的情況下,某個(gè)連接上消息的傳遞類似于:
      請(qǐng)求1 -> 響應(yīng)1 -> 請(qǐng)求2 -> 響應(yīng)2 -> 請(qǐng)求3 -> 響應(yīng)3
    • 某個(gè)連接上的消息變成了類似這樣(管線化):
      請(qǐng)求1 -> 請(qǐng)求2 -> 請(qǐng)求3 -> 響應(yīng)1 -> 響應(yīng)2 -> 響應(yīng)3
  2. 特點(diǎn):
    • 管線化機(jī)制通過持久連接完成,僅HTTP/1.1支持此技術(shù);
    • 只有GET和HEAD請(qǐng)求可以進(jìn)行管線化,而POST則有所限制;
    • 初次創(chuàng)建連接時(shí)不應(yīng)啟動(dòng)管線機(jī)制,因?yàn)閷?duì)方(服務(wù)器)不一定支持HTTP/1.1版本的協(xié)議;
    • 管線化不會(huì)影響響應(yīng)到來的順序,如上面的例子所示,響應(yīng)返回的順序并未改變;
    • HTTP /1.1要求服務(wù)器端支持管線化,但并不要求服務(wù)器端也對(duì)響應(yīng)進(jìn)行管線化處理,只是要求對(duì)于管線化的請(qǐng)求不失敗即可;
    • 由于上面提到的服務(wù)器端問題,開啟管線化很可能并不會(huì)帶來大幅度的性能提升,而且很多服務(wù)器端和代理程序?qū)芫€化的支持并不好,因此現(xiàn)代瀏覽器如Chrome和Firefox默認(rèn)并未開啟管線化支持;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、HTTP協(xié)議的主要特點(diǎn) 簡(jiǎn)單快速 資源固定 靈活 通過一個(gè)HTTP協(xié)議可完成不同數(shù)據(jù)類型的傳輸 無連接 ...
    猴子Hope閱讀 355評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • 一、概念(載錄于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434閱讀 8,738評(píng)論 6 152
  • Http協(xié)議詳解 標(biāo)簽(空格分隔): Linux 聲明:本片文章非原創(chuàng),內(nèi)容來源于博客園作者M(jìn)IN飛翔的HTTP協(xié)...
    Sivin閱讀 5,344評(píng)論 3 82
  • 往事不敢隨風(fēng) 最美的人就應(yīng)當(dāng)在最美的回憶
    子子佩閱讀 150評(píng)論 0 0

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