前端面試筆記 – 網路

cppprimer發表於2019-02-16

Traditionally, why has it been better to serve site assets from multiple domains?

Do your best to describe the process from the time you type in a website`s URL to it finishing loading on your screen.

What are the differences between Long-Polling, Websockets and Server-Sent Events?

Explain the following request and response

headers:

  • Diff. between Expires, Date, Age and If-Modified-…
  • Do Not Track
  • Cache-Control
  • Transfer-Encoding
  • ETag
  • X-Frame-Options

快取儲存策略

  • Cache-Control

    • max-age
    • public // 是
    • private //表示是否被代理伺服器快取 否
    • no-cache
    • no-store

快取過期策略

  • Expires

快取對比策略

  • REQ ETags, RESP If-None-Match
  • REQ Last-Modified, RESP If-Modified-Since

HTTP1.0 快取欄位詳解

1.Pragma。 設定頁面是否快取,為Pragma則快取,no-cache則不快取。

  1. Expires。有了Pragma來禁用快取,自然也需要有個東西來啟用快取和定義快取時間。如果Pragma頭部和Expires頭部同時存在,則起作用的會是Pragma。,響應報文中Expires所定義的快取時間是相對伺服器上的時間而言的,其定義的是資源“失效時刻”,如果客戶端上的時間跟伺服器上的時間不一致(特別是使用者修改了自己電腦的系統時間),那快取時間可能就沒啥意義了。

HTTP1.1 快取欄位詳解

  1. Cache-Control: 定義快取過期時間。若報文中同時出現了 Expires 和 Cache-Control,則以 Cache-Control 為準。

(1)max-age=600。 表示檔案在本地應該快取,且有效時長是600秒(從發出請求算起)。在接下來600秒內,如果有請求這個資源,瀏覽器不會發出 HTTP 請求,而是直接使用本地快取的檔案。

(2)no-cache。實際上她是會被快取的,只不過每次在向客戶端(瀏覽器)提供響應資料時,==快取都要向伺服器評估快取響應的有效性==

(3)no-store
響應不被快取的意思。

Last-Modified / If-Modified-Since
(1)Last-Modified: 標示這個響應資源的最後修改時間。web伺服器在響應請求時,告訴瀏覽器資源的最後修改時間。

(2)If-Modified-Since:
當資源過期時(使用Cache-Control標識的max-age),發現資源具有Last-Modified宣告,則再次向web伺服器請求時帶上頭 If-Modified-Since,表示請求時間。若服務端請求資源的最後修改時間較新,則響應資源內容(HTTP 200);若最後修改時間較舊,則響應HTTP 304,告知瀏覽器繼續使用所儲存的cache。

Etag/If-None-Match: Etag/If-None-Match也要配合Cache-Control使用。
(1)Etag: web伺服器響應請求時,告訴瀏覽器當前資源在伺服器的唯一標識(生成規則由伺服器覺得)

(2)If-None-Match: 當資源過期時(使用Cache-Control標識的max-age),發現資源具有Etage宣告,則再次向web伺服器請求時帶上頭If-None-Match (Etag的值)。伺服器與被請求資源的相應校驗串進行比對,決定返回200或304。

既生Last-Modified何生Etag?
HTTP1.1中Etag的出現主要是為了解決幾個Last-Modified比較難解決的問題:

(1) Last-Modified標註的最後修改只能精確到秒級,如果某些檔案在1秒鐘以內,被修改多次的話,它將不能準確標註檔案的修改時間。

(2) 如果某些檔案會被定期生成,當有時內容並沒有任何變化,但Last-Modified卻改變了,導致檔案沒法使用快取。

(3) 有可能存在伺服器沒有準確獲取檔案修改時間,或者與代理伺服器時間不一致等情形。

Last-Modified與ETag是可以一起使用的,伺服器會優先驗證ETag,一致的情況下,才會繼續比對Last-Modified,最後才決定是否返回304。

What are HTTP methods? List all HTTP methods that you know, and explain them.

HTTP: Status 200 – 伺服器成功返回網頁
301 永久轉移
302 臨時轉移
304 not modified
400 bad request
401 not auth
403 forbidden
500 內部錯誤
HTTP: Status 404 – 請求的網頁不存在
HTTP: Status 503 – 服務不可用

https

  1. 伺服器向客戶端傳送公鑰和證書
  2. 客戶端校驗證書,並生成密碼,用公鑰加密
  3. 服務端解析到密碼後,以後的東西都用這個密碼

想`

http2

  1. 多路複用 允許同時多個請求,http1.1對於同一個域名同時只能有2-8個請求

websocket

是一個基於tcp的網路協議,實現了服務端與客戶端的互相通訊,伺服器可以主動向客戶端通訊

xss

跨站指令碼攻擊是指服務端未對使用者輸入做驗證
使得HTML直接執行使用者輸入的惡意指令碼

csrf

偽造使用者請求,比如訪問a網站之後,使用者訪問了惡意的b網站,b網站迴向a網站傳送惡意請求

避免使用get進行敏感操作
使用token令牌

相關文章