前端面試必考:http協議!
那什麼是http協議呢?今天一起來學習掌握,一大波乾貨來襲!
當我們打開谷歌開發控制檯時,可以通過Network面板查看某一請求的請求頭和響應頭還有響應內容,這些特別是在查看Ajax請求的時候,非常有幫助。可以看到HTTP請求頭、HTTP響應頭、HTTP返回的內容等信息,對於開發、調試,都是很有用的。
什麼是HTTP?
HTTP 全稱:超文本傳輸協議
HTTP 負責 web 服務器與 web 瀏覽器之間的通信。
HTTP 用於從 web 客戶端(瀏覽器)向 web 服務器發送請求,並從 web 服務器向 web 客戶端返回內容(網頁)。
HTTP工作原理(流程)
一次HTTP操作稱爲一個事務,其工作過程可分爲四步:
1、首先客戶機與服務器需要建立連接。只要單擊某個超級鏈接,HTTP的工作開始。
2、建立連接後,客戶機發送一個請求給服務器,請求方式的格式爲:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。
3、服務器接到請求後,給予相應的響應信息,其格式爲一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。
4、客戶端接收服務器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然後客戶機與服務器斷開連接
簡單記憶:
建立TCP連接
瀏覽器向服務器發送請求
服務器發送應答頭,向瀏覽器發送數據
服務器關閉TCP連接
需要注意的事項:
http不是持續性連接:每次只限一個請求,請求-應答-斷開。可以節省傳輸時間。
http是無狀態的:是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
HTTP協議有哪些特徵
支持客戶/服務器模式
簡單快速
靈活
無連接
無狀態
HTTP和TCP之間的關係
TCP/IP參考模型,如下圖:
HTTP狀態碼(status code)
狀態碼:每條HTTP響應報文返回時都會攜帶一個狀態碼,用於告知客戶端請求是否成功或者是否需要執行其他動作。狀態碼由三位數字組成。
http中status-code的第一個數字定義響應的類別
響應類:
1XX:信息響應類;表示接受到請求並且繼續處理
2XX:處理成功響應類;表示動作被成功接收、理解和接受
3XX:重定向響應類:請求必須進一步處理。
錯誤類:
4XX:客戶端錯誤;客戶端請求有語法錯誤或請求不能正確執行
5XX:服務端錯誤;服務端不能正確執行一個正確的請求
常見的狀態代碼
200:客戶端請求ok
304:自從上次請求後,請求的網頁未修改過
403:禁止訪問
404:服務器找不到請求的網頁
500:服務器遇到錯誤,無法完成請求
502:服務器作爲網關或代理,從上游服務器收到無效響應
HTTP方法有哪些?
GET:通過請求URI得到資源。一般用於獲取/查詢資源信息。
POST:用於向服務器提交新的內容。一般用於更新資源信息。
PUT:傳輸文件,報文主體中包含文件內容,保存到對應URI位置。
HEAD: 獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI是否有效。
DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。
OPTIONS:查詢相應URI支持的HTTP方法。
HTTP常見面試題(部分)
1、http與https的區別:
http是不安全的,而https是安全的
http標準端口是80,而https的標準端口是443
http無法加密,而https對傳輸的數據進行加密
http無需證書,而https需要CA機構wosign的頒發的SSL證書
https就是ttp加上加密處理(一般是SSL安全通信線路)+認證+完整性保護
2、URI和URL的區別
URI,統一資源標識符。
URL,統一資源定位器。URL一般由三部分組成 :協議 、存有資源的主機IP地址、主機資源的具體地址。如目錄和文件名等
3、什麼是Http協議無狀態協議?怎麼解決Http協議無狀態協議?
(1)無狀態協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息
(2)解決辦法:
Cookie
通過Session會話保存。
可適當的上網搜索更多相關的資料,面試題來給自己充電。當然,掌握以上全部基礎必知的知識點,對面試的你來說,有提高自己的信心!
推薦經典書籍
《HTTP權威指南》
《圖解HTTP》
《HTTP/2基礎教程》
HTTP協議是前端面試必問的一個知識點,你掌握了嗎?
歡迎關注微信公衆號【一文插畫】,回覆【資源】即可獲得學習資料~ “領乾貨” 一起提升技能!未經授權,不得轉載。