Http協議面試題

從各方面整理javascript

一、說一下什麼是Http協議?css

對器客戶端和 服務器端之間數據傳輸的格式規範,格式簡稱爲「超文本傳輸協議」。html

二、什麼是Http協議無狀態協議?怎麼解決Http協議無狀態協議?(曾經去某創業公司問到)前端

  • 無狀態協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息
  • 無狀態協議解決辦法: 經過一、Cookie 二、經過Session會話保存。

三、說一下Http協議中302狀態(阿里常常問)java

  • http協議中,返回狀態碼302表示重定向。
  • 這種狀況下,服務器返回的頭部信息中會包含一個 Location 字段,內容是重定向到的url。

四、Http協議有什麼組成?程序員

  請求報文包含三部分:數據庫

  • 請求行:包含請求方法、URI、HTTP版本信息
  • 請求首部字段
  • 請求內容實體

  響應報文包含三部分:瀏覽器

  • 狀態行:包含HTTP版本、狀態碼、狀態碼的緣由短語
  • 響應首部字段
  • 響應內容實體
  • 空行

說一下網絡傳輸的過程緩存

五、Http協議中有那些請求方式?安全

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

六、Http協議中Http1.0與1.1區別?

  • 在http1.0中,當創建鏈接後,客戶端發送一個請求,服務器端返回一個信息後就關閉鏈接,當瀏覽器下次請求的時候又要創建鏈接,顯然這種不斷創建鏈接的方式,會形成不少問題。
  • 在http1.1中,引入了持續鏈接的概念,經過這種鏈接,瀏覽器能夠創建一個鏈接以後,發送請求並獲得返回信息,而後繼續發送請求再次等到返回信息,也就是說客戶端能夠連續發送多個請求,而不用等待每個響應的到來。

7.Http協議實現的原理機制

(1).整個流程步驟:

(2)域名解析過程:

(3).三次握手過程

(4).發起Http請求

(5).響應Http請求並獲得HTML代碼

(6).瀏覽器解析HTML代碼

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

八、get與post請求區別?(初級程序員必備問題)

區別一:

  • get重點在從服務器上獲取資源。
  • post重點在向服務器發送數據。

區別二:

  • get傳輸數據是經過URL請求,以field(字段)= value的形式,置於URL後,並用"?"鏈接,多個請求數據間用"&"鏈接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,這個過程用戶是可見的。
  • post傳輸數據經過Http的post機制,將字段與對應值封存在請求實體中發送給服務器,這個過程對用戶是不可見的。

區別三:

  • Get傳輸的數據量小,由於受URL長度限制,但效率較高。
  • Post能夠傳輸大量數據,因此上傳文件時只能用Post方式。

區別四:

  • get是不安全的,由於URL是可見的,可能會泄露私密信息,如密碼等。
  • post較get安全性較高。

區別五:

  • get方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼。
  • post支持標準字符集,能夠正確傳遞中文字符。

GET和POST有一個重大區別,簡單的說:

GET產生一個TCP數據包;POST產生兩個TCP數據包。長的說:

對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);

而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。

九、常見Http協議狀態?

200:請求被正常處理

204:請求被受理但沒有資源能夠返回

206:客戶端只是請求資源的一部分,服務器只對請求的部分資源執行GET方法,相應報文中經過Content-Range指定範圍的資源。

301:永久性重定向

302:臨時重定向

303:與302狀態碼有類似功能,只是它但願客戶端在請求一個URI的時候,能經過GET方法重定向到另外一個URI上

304:發送附帶條件的請求時,條件不知足時返回,與重定向無關

307:臨時重定向,與302相似,只是強制要求使用POST方法

400:請求報文語法有誤,服務器沒法識別

401:請求須要認證

403:請求的對應資源禁止被訪問

404:服務器沒法找到對應資源

500:服務器內部錯誤

503:服務器正忙

十、Http協議首部字段?

a、通用首部字段(請求報文與響應報文都會使用的首部字段)

  • Date:建立報文時間
  • Connection:鏈接的管理
  • Cache-Control:緩存的控制
  • Transfer-Encoding:報文主體的傳輸編碼方式

b、請求首部字段(請求報文會使用的首部字段)

  • Host:請求資源所在服務器
  • Accept:可處理的媒體類型
  • Accept-Charset:可接收的字符集
  • Accept-Encoding:可接受的內容編碼
  • Accept-Language:可接受的天然語言

c、響應首部字段(響應報文會使用的首部字段)

  • Accept-Ranges:可接受的字節範圍
  • Location:令客戶端從新定向到的URI
  • Server:HTTP服務器的安裝信息

d、實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)

  • Allow:資源可支持的HTTP方法
  • Content-Type:實體主類的類型
  • Content-Encoding:實體主體適用的編碼方式
  • Content-Language:實體主體的天然語言
  • Content-Length:實體主體的的字節數
  • Content-Range:實體主體的位置範圍,通常用於發出部分請求時使用

十一、Http與Https優缺點?

  • 通訊使用明文不加密,內容可能被竊聽,也就是被抓包分析。
  • 不驗證通訊方身份,可能遭到假裝
  • 沒法驗證報文完整性,可能被篡改
  • HTTPS就是HTTP加上加密處理(通常是SSL安全通訊線路)+認證+完整性保護

十二、Http優化

  • 利用負載均衡優化和加速HTTP應用
  • 利用HTTP Cache來優化網站

1三、Http協議有那些特徵?

一、支持客戶/服務器模式;二、簡單快速;三、靈活;四、無鏈接;五、無狀態。

14.Cookie是否會被覆蓋,localStorage是否會被覆蓋

Cookie是能夠覆蓋的,若是重複寫入同名的Cookie,那麼將會覆蓋以前的Cookie 若是要刪除某個Cookie,只須要新建一個同名的Cookie,並將maxAge設置爲0,並添加到response中覆蓋原來的Cookie。注意是0而不是負數。負數表明其餘的意義。

localStorage存儲在一個對象中. 有鍵值對 什麼是localStorage,在HTML5中,新加入了一個localStorage特性,這個特性主要是用來做爲本地存儲來使用的,解決了cookie存儲空間不足的問題(cookie中每條cookie的存儲空間爲4k),localStorage中通常瀏覽器支持的是5M大小,這個在不一樣的瀏覽器中localStorage會有所不一樣。

localStorage的優點

一、localStorage拓展了cookie的4K限制

二、localStorage會能夠將第一次請求的數據直接存儲到本地,這個至關於一個5M大小的針對於前端頁面的數據庫,相比於cookie能夠節約帶寬,可是這個倒是隻有在高版本的瀏覽器中才支持的

localStorage的侷限

一、瀏覽器的大小不統一,而且在IE8以上的IE版本才支持localStorage這個屬性

二、目前全部的瀏覽器中都會把localStorage的值類型限定爲string類型,這個在對咱們平常比較常見的JSON對象類型須要一些轉換

三、localStorage在瀏覽器的隱私模式下面是不可讀取的

四、localStorage本質上是對字符串的讀取,若是存儲內容多的話會消耗內存空間,會致使頁面變卡

五、localStorage不能被爬蟲抓取到 localStorage與sessionStorage的惟一一點區別就是localStorage屬於永久性存儲,而sessionStorage屬於當會話結束的時候,sessionStorage中的鍵值對會被清空

1五、瀏覽器輸入url按回車背後經歷了哪些? 在PC瀏覽器的地址欄輸入一串URL,而後按Enter鍵這個頁面渲染出來,這個過程當中都發生了什麼事?

  1. 首先,在瀏覽器地址欄中輸入url,先解析url,檢測url地址是否合法
  2. 瀏覽器先查看瀏覽器緩存-系統緩存-路由器緩存,若是緩存中有,會直接在屏幕中顯示頁面內容。若沒有,則跳到第三步操做。 瀏覽器緩存:瀏覽器會記錄DNS一段時間,所以,只是第一個地方解析DNS請求; 操做系統緩存:若是在瀏覽器緩存中不包含這個記錄,則會使系統調用操做系統,獲取操做系統的記錄(保存最近的DNS查詢緩存); 路由器緩存:若是上述兩個步驟均不能成功獲取DNS記錄,繼續搜索路由器緩存; ISP緩存:若上述均失敗,繼續向ISP搜索。
  3. 在發送http請求前,須要域名解析(DNS解析),解析獲取相應的IP地址。
  4. 瀏覽器向服務器發起tcp鏈接,與瀏覽器創建tcp三次握手。
  5. 握手成功後,瀏覽器向服務器發送http請求,請求數據包。
  6. 服務器處理收到的請求,將數據返回至瀏覽器
  7. 瀏覽器收到HTTP響應
  8. 瀏覽器解碼響應,若是響應能夠緩存,則存入緩存。
  9. 瀏覽器發送請求獲取嵌入在HTML中的資源(html,css,javascript,圖片,音樂······),對於未知類型,會彈出對話框。
  10. 瀏覽器發送異步請求。
  11. 頁面所有渲染結束。

1六、cookies機制和session機制的區別

cookies數據保存在客戶端,session數據保存在服務器端;

cookies能夠減輕服務器壓力,可是不安全,容易進行cookies欺騙;

session較安全,但佔用服務器資源

1七、URI和URL的區別

URI,是uniform resource identifier,統一資源標識符,用來惟一的標識一個資源。

  • Web上可用的每種資源如HTML文檔、圖像、視頻片斷、程序等都是一個來URI來定位的
  • URI通常由三部組成:
  • ①訪問資源的命名機制
  • ②存放資源的主機名
  • ③資源自身的名稱,由路徑表示,着重強調於資源。

URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL能夠用來標識一個資源,並且還指明瞭如何locate這個資源。

  • URL是Internet上用來描述信息資源的字符串,主要用在各類WWW客戶程序和服務器程序上,特別是著名的Mosaic。
  • 採用URL能夠用一種統一的格式來描述各類信息資源,包括文件、服務器的地址和目錄等。URL通常由三部組成:
  • ①協議(或稱爲服務方式)
  • ②存有該資源的主機IP地址(有時也包括端口號)
  • ③主機資源的具體地址。如目錄和文件名等

URN,uniform resource name,統一資源命名,是經過名字來標識資源,好比mailto:java-net@java.sun.com。

  • URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI。籠統地說,每一個 URL 都是 URI,但不必定每一個 URI 都是 URL。這是由於 URI 還包括一個子類,即統一資源名稱 (URN),它命名資源但不指定如何定位資源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。

在Java的URI中,一個URI實例能夠表明絕對的,也能夠是相對的,只要它符合URI的語法規則。而URL類則不只符合語義,還包含了定位該資源的信息,所以它不能是相對的。

在Java類庫中,URI類不包含任何訪問資源的方法,它惟一的做用就是解析。

相反的是,URL類能夠打開一個到達資源的流。

相關文章
相關標籤/搜索