1. 程式人生 > >總結一下面試常被問的HTTP協議

總結一下面試常被問的HTTP協議

http和https的區別?

https的具體實現原理是什麼,是怎麼實現安全傳輸的
       HTTP協議傳輸的資料都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私資訊非常不安全。http是無狀態的,埠為80;
      為了保證這些隱私資料能加密傳輸,於是網景公司設計了SSL,協議用於對HTTP協議傳輸的資料進行加密,從而就誕生了HTTPS。埠號443,
       1客戶端傳送隨機數和支援的加密方式列表
       2伺服器返回隨機數,選擇的加密方式和證書(經過ca頒發,或者自簽名的證書,該證書包含公鑰)
       3客戶端驗證證書,使用證書中的公鑰加密傳送給服務端
       4服務端使用私鑰解密得到報文;
  https缺點:1.HTTPS協議握手階段比較費時,會使頁面的載入時間延長近50%,增加10%到20%的耗電,效率上不如http;
          2.SSL證書需要錢,功能越強大的證書費用越高,個人網站、小網站沒有必要一般不會用

http的響應狀態碼


  100——指示提示性資訊
    100 Continue 繼續,一般在傳送post請求時,已傳送了http header之後服務端將返回此資訊,表示確認,之後傳送具體引數資訊
  200——指示成功的響應
  200 OK 正常返回資訊
  201 Created 請求成功並且伺服器建立了新的資源
  202 Accepted 伺服器已接受請求,但尚未處理
  300——指示客戶端要重定向
  301 Moved Permanently 請求的網頁已永久移動到新位置。
  302 Found 臨時性重定向。
  303 See Other 臨時性重定向,且總是使用 GET 請求新的 URI。
  304 Not Modified 自從上次請求後,請求的網頁未修改過。
  400——客戶端請求錯誤
  400 Bad Request 伺服器無法理解請求的格式,客戶端不應當嘗試再次使用相同的內容發起請求。
  401 Unauthorized 請求未授權。
  403 Forbidden 禁止訪問。
  404 Not Found 找不到如何與 URI 相匹配的資源。
  500——伺服器端的錯誤
  500 Internal Server Error 最常見的伺服器端錯誤。(編碼有問題)
  503 Service Unavailable 伺服器端暫時無法處理請求(可能是過載或維護)。


http協議get和post的區別?


  get:語義上表達客戶端想獲取,post語義上表達客戶端想傳遞
  get:請求資料追加在url做查詢字串,post請求資料在請求主體中
  get:請求資料型別只能是文字字元,post請求資料可以是任意型別,圖片,視訊
  get:請求資料有長度限制(幾KB),post請求資料沒有長度限制
  get:能被快取,post:不能被快取
  get和post在http協議中其實安全性都一樣,只是get查詢字串會在位址列顯示讓人感覺比較暴露


http請求方法有幾種?


  八種:除了常用的get和post
  還有:HEAD  與 GET 相同,但只返回 HTTP 報頭,不返回文件主體。
        PUT  上傳指定的 URI 表示。
        DELETE  刪除指定資源。
        OPTIONS  返回伺服器支援的 HTTP 方法。
        CONNECT   把請求連線轉換到透明的 TCP/IP 通道。
        TRACE 

http1.0和http1.1 http2.0區別


    http1.1預設長連結,
    http1.1節約頻寬:支援只發送header資訊(不帶任何body資訊),如果伺服器認為客戶端有許可權請求伺服器,則返回100,否則                返回401。客戶端如果接受到100,才開始把請求body傳送到伺服器
    http2:多路複用的技術,做到同一個連線併發處理多個請求,而且併發請求的數量比HTTP1.1大了好幾個數量級。
    http2:可以對請求頭header進行壓縮(http1.1每次請求頭部消耗流量多)
    http2:伺服器推送,伺服器端推送的這些資源其實存在客戶端的快取,客戶端直接從本地載入這些資源就可以