前端面試題-HTTP協議


題目:

  1. HTTP常見的狀態碼有哪些
    先說一下狀態碼分類,再舉例一下常見狀態碼
  2. HTTP常見的header有哪些
    response header / request header / 緩存header
  3. 什么是restful API
  4. 描述一下HTTP的緩存機制(重要)

HTTP狀態碼

狀態碼分類

  • 1xx 服務器收到請求
  • 2xx 請求成功
  • 3xx 重定向
  • 4xx 客戶端錯誤
  • 5xx 服務端錯誤

常見狀態碼

  • 200 成功
  • 301 永久重定向 配合location 瀏覽器自動處理,適用於域名到期,瀏覽器不會訪問老的域名
  • 302 臨時重定向 配合location 瀏覽器自動處理 ,下次會再次訪問老的域名;可以控制和攔截,可以做統計
  • 304 資源未被修改,資源在本地有效,不需要重新請求
  • 404 資源未找到
  • 500 服務器錯誤
  • 504 網關超時

關於協議和規范

就是一個約定,要求大家都跟着執行,不要違反規范,例如IE瀏覽器

HTTP methods

傳統的methods

  • get獲取服務器的數據
  • post向服務器提交數據
    簡單的網頁功能,就這兩個操作

現在的methods

  • get獲取數據
  • post新建數據
  • patch/put更新數據
  • delete刪除數據

restful API

一個新的API設計方法(早已推廣使用)
傳統API設計:把每個URL當做一個功能
restful API設計:把每個URL當做一個唯一的資源

如何設計成一個資源:盡量不用URL參數

舉例

博客列表的API
博客的增刪改查
image

HTTP headers

常見的request headers

  • accept 瀏覽器可接收的數據格式
  • accept-encoding 瀏覽器可接收的壓縮算法,如gzip
  • accpet-languange 瀏覽器可接收的語言,如zh-CN
  • connection:keep-alive 一次TCP連接重復使用
  • cookie
  • host 請求的域名是什么
  • user-agent 瀏覽器信息
  • content-type 發生數據的格式,如applicatioin/json

常見的response headers

  • content-type 返回數據的格式,如application/json
  • content-length 返回數據的大小,多少字節
  • content-encoding 返回數據的壓縮算法,如gzip
  • set-cookie 修改cookie

自定義headers

緩存相關的headers

  • cache-control
  • last-modified if-modified-since
  • etag if-none-match

HTTP 緩存

關於緩存的介紹

  • 什么是緩存
  • 為什么需要緩存 需要頁面加載更快一些 網絡請求不穩定 資源要求高
  • 哪些資源可以被緩存——靜態資源 js css img

http緩存策略(強制緩存+協商緩存)

強制緩存

  • cache-control
    在response headers中,服務器端控制哪個資源可以加;
    控制強制緩存的邏輯;
    緩存過期了,再次請求服務器(如何判斷緩存過期,比較cache-control的max-age);
    image
    no-cache 不用本地強制緩存; no-store 不緩存

協商緩存

  • 服務器端存儲策略
  • 服務器判斷客戶端資源,是否和服務器端的資源一樣
  • 一致則返回304,否則返回200和最新的資源
  • 資源標識:資源符號,通過資源標識來判斷是否一致(客戶端資源、服務器資源)
    • last-modified 資源的最后修改時間 \
    • etag 資源的唯一標識
  • 會優先使用etag,last-modified 只能請卻道秒級,etag更精確
    image
    以下給出資源標識為last-modified和etag的協商緩存過程:
    image
    image

HTTP緩存綜述

image

刷新操作方式,對緩存的影響

三種刷新操作

  • 正常操作:地址欄輸入url 跳轉鏈接 前進后退 強制緩存有效,協商緩存有效
  • 手動刷新:f5 點擊刷新按鈕 右擊菜單刷新 強制緩存失效,協商緩存有效
  • 強制刷新:Ctrl + f5 強制緩存失效,協商緩存失效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM