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則不快取。
- Expires。有了Pragma來禁用快取,自然也需要有個東西來啟用快取和定義快取時間。如果Pragma頭部和Expires頭部同時存在,則起作用的會是Pragma。,響應報文中Expires所定義的快取時間是相對伺服器上的時間而言的,其定義的是資源“失效時刻”,如果客戶端上的時間跟伺服器上的時間不一致(特別是使用者修改了自己電腦的系統時間),那快取時間可能就沒啥意義了。
HTTP1.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
- 伺服器向客戶端傳送公鑰和證書
- 客戶端校驗證書,並生成密碼,用公鑰加密
- 服務端解析到密碼後,以後的東西都用這個密碼
想`
http2
- 多路複用 允許同時多個請求,http1.1對於同一個域名同時只能有2-8個請求
websocket
是一個基於tcp的網路協議,實現了服務端與客戶端的互相通訊,伺服器可以主動向客戶端通訊
xss
跨站指令碼攻擊是指服務端未對使用者輸入做驗證
使得HTML直接執行使用者輸入的惡意指令碼
csrf
偽造使用者請求,比如訪問a網站之後,使用者訪問了惡意的b網站,b網站迴向a網站傳送惡意請求
避免使用get進行敏感操作
使用token令牌