前端面試題整理—HTTP篇

1、常見的HTTP方法有哪些?

GET: 用於請求訪問已經被URI(統一資源標識符)識別的資源,可以通過URL傳參給服務器
POST:用於傳輸信息給服務器,主要功能與GET方法類似,但一般推薦使用POST方式。
PUT: 傳輸文件,報文主體中包含文件內容,保存到對應URI位置。
HEAD: 獲得報文首部,與GET方法類似,只是不返回報文主體,一般用於驗證URI是否有效。
DELETE:刪除文件,與PUT方法相反,刪除對應URI位置的文件。
OPTIONS:查詢相應URI支持的HTTP方法
2、HTTP與HTTPS的區別:

HTTP 的URL 以http:// 開頭,而HTTPS 的URL 以https:// 開頭
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 標準端口是80 ,而 HTTPS 的標準端口是443
在OSI 網絡模型中,HTTP工作於應用層,而HTTPS 的安全傳輸機制工作在傳輸層
HTTP 無法加密,而HTTPS 對傳輸的數據進行加密
HTTP無需證書,而HTTPS 需要CA機構wosign的頒發的SSL證書
3、常見的HTTP狀態碼:

200:請求被正常處理
204:請求被受理但沒有資源可以返回
206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中通過Content-Range指定範圍的資源。
301:永久性重定向
302:臨時重定向
303:與302狀態碼有相似功能,只是它希望客戶端在請求一個URI的時候,能通過GET方法重定向到另一個URI上
304:發送附帶條件的請求時,條件不滿足時返回,與重定向無關
307:臨時重定向,與302類似,只是強制要求使用POST方法
400:請求報文語法有誤,服務器無法識別
401:請求需要認證
403:請求的對應資源禁止被訪問
404:服務器無法找到對應資源
500:服務器內部錯誤
503:服務器超過最大負荷
4、一次完整的HTTP事務是怎樣一個過程?

1)域名解析

2) 發起TCP的3次握手

3) 建立TCP連接後發起http請求

4) 服務器響應http請求,瀏覽器得到html代碼

5) 瀏覽器解析html代碼,並請求html代碼中的資源(如js、css、圖片等)

6) 瀏覽器對頁面進行渲染呈現給用戶

5、HTTPS工作原理

一、首先HTTP請求服務端生成證書,客戶端對證書的有效期、合法性、域名是否與請求的域名一致、證書的公鑰(RSA加密)等進行校驗;
二、客戶端如果校驗通過後,就根據證書的公鑰的有效, 生成隨機數,隨機數使用公鑰進行加密(RSA加密);
三、消息體產生的後,對它的摘要進行MD5(或者SHA1)算法加密,此時就得到了RSA簽名;
四、發送給服務端,此時只有服務端(RSA私鑰)能解密。
五、解密得到的隨機數,再用AES加密,作爲密鑰(此時的密鑰只有客戶端和服務端知道)
6、HTTP優化方案

TCP複用:TCP連接複用是將多個客戶端的HTTP請求複用到一個服務器端TCP連接上,而HTTP複用則是一個客戶端的多個HTTP請求通過一個TCP連接進行處理。前者是負載均衡設備的獨特功能;而後者是HTTP 1.1協議所支持的新功能,目前被大多數瀏覽器所支持。
內容緩存:將經常用到的內容進行緩存起來,那麼客戶端就可以直接在內存中獲取相應的數據了。
壓縮:將文本數據進行壓縮,減少帶寬
SSL加速(SSL Acceleration):使用SSL協議對HTTP協議進行加密,在通道內加密並加速
TCP緩衝:通過採用TCP緩衝技術,可以提高服務器端響應時間和處理效率,減少由於通信鏈路問題給服務器造成的連接負擔。
7、說說304緩存的原理

服務器首先產生ETag,服務器可在稍後使用它來判斷頁面是否已經被修改。本質上,客戶端通過將該記號傳回服務器要求服務器驗證其(客戶端)緩存
304是HTTP狀態碼,服務器用來標識這個文件沒修改,不返回內容,瀏覽器在接收到個狀態碼後,會使用瀏覽器已緩存的文件
客戶端請求一個頁面(A)。 服務器返回頁面A,並在給A加上一個ETag。 客戶端展現該頁面,並將頁面連同ETag一起緩存。 客戶再次請求頁面A,並將上次請求時服務器返回的ETag一起傳遞給服務器。 服務器檢查該ETag,並判斷出該頁面自上次客戶端請求之後還未被修改,直接返回響應304(未修改——Not Modified)和一個空的響應體
8、爲什麼HTTPS安全

因爲網絡請求需要中間有很多的服務器路由器的轉發。中間的節點都可能篡改信息,而如果使用HTTPS,密鑰在你和終點站纔有。https之所以比http安全,是因爲他利用ssl/tls協議傳輸。它包含證書,卸載,流量轉發,負載均衡,頁面適配,瀏覽器適配,refer傳遞等。保障了傳輸過程的安全性
9、關於Http 2.0 你知道多少

HTTP/2引入了“服務端推(server push)”的概念,它允許服務端在客戶端需要數據之前就主動地將數據發送到客戶端緩存中,從而提高性能。

HTTP/2提供更多的加密支持

HTTP/2使用多路技術,允許多個消息在一個連接上同時交差。

它增加了頭壓縮(header compression),因此即使非常小的請求,其請求和響應的header都只會佔用很小比例的帶寬

10、一個頁面從輸入 URL 到頁面加載顯示完成,這個過程中都發生了什麼

01.瀏覽器查找域名對應的IP地址(DNS 查詢:瀏覽器緩存->系統緩存->路由器緩存->ISP DNS 緩存->根域名服務器)
02.瀏覽器向 Web 服務器發送一個 HTTP 請求(TCP三次握手)
03.服務器 301 重定向(從 http://example.com 重定向到 http://www.example.com)
04.瀏覽器跟蹤重定向地址,請求另一個帶 www 的網址
05.服務器處理請求(通過路由讀取資源)
06.服務器返回一個 HTTP 響應(報頭中把 Content-type 設置爲 ‘text/html’)
07.瀏覽器進 DOM 樹構建
08.瀏覽器發送請求獲取嵌在 HTML 中的資源(如圖片、音頻、視頻、CSS、JS等)
09.瀏覽器顯示完成頁面
10.瀏覽器發送異步請求
11、TCP和UDP的區別

TCP(Transmission Control Protocol,傳輸控制協議)是基於連接的協議,也就是說,在正式收發數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來

UDP(User Data Protocol,用戶數據報協議)是與TCP相對應的協議。它是面向非連接的協議,它不與對方建立連接,而是直接就把數據包發送過去! UDP適用於一次只傳送少量數據、對可靠性要求不高的應用環境

12、說說網絡分層裏七層模型是哪七層

應用層:允許訪問OSI環境的手段

表示層:對數據進行翻譯、加密和壓縮

會話層:建立、管理和終止會話

傳輸層:提供端到端的可靠報文傳遞和錯誤恢復

網絡層:負責數據包從源到宿的傳遞和網際互連

物理層:通過媒介傳輸比特,確定機械及電氣規範

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章