1. 程式人生 > >HTTP知識點記錄

HTTP知識點記錄

Http頭

  1. Http1.0沒有長連結, Http1.1預設長連結,是為了避免不斷的建立連結,斷開連結的消耗,並且可以不得到確認繼續請求,提交響應速度。

  2. Http分為請求報文和相應報文

    1. 請求報文
      1. 報文首部
        1. 請求行
        2. 請求首部欄位
        3. 通用首部欄位
        4. 實體首部欄位
        5. 其他
        6. 空行
        7. 報文主體
    2. 響應報文
      1. 報文首部
        1. 狀態行
        2. 響應首部欄位
        3. 通用首部欄位
        4. 實體首部欄位
        5. 其他
      2. 空行
      3. 報文主體

    在這裡插入圖片描述

  3. Http通過編碼格式的方式來提升傳輸速率,並且分塊傳送

  4. Http使用Rang請求部分內容

  5. Http使用Accept Accept-Charset Accept-Encoding Accept-Language Content-Language 來進行內容協商,內容協商是指國際化

HTTP狀態碼

  1. 2xx
    1. 200 OK 正常處理
    2. 204 請求處理成功,但沒有資源可以返回 返回的響應報文中不含實體的主體部分
    3. 206 伺服器成功響應了範圍請求 響應報文中包含由Content-Range 指定範圍的實體內容
  2. 3xx
    1. 301 永久重定向 該狀態碼錶示請求的資源已被分配了新的URI,自動轉到新位置,按Location首部欄位提示的URI重新儲存
    2. 302 Found 臨時重定向 該狀態碼錶示請求的資源被分配了新的URI,本次希望使用者以新的URI訪問,但可以繼續按當前URI訪問
    3. 303 See Other 該狀態碼錶示由於請求對應的資源存在另一個URI,應使用GET方法定向獲取請求的資源
    4. 304 Not Modififed 客戶端傳送附帶條件的請求,伺服器端允許請求返回資源,但是條件未滿足,不返回任何主體
    5. 307 Temporary Redirect 臨時重定向 ,伺服器目前從不同的位置響應網頁請求,但請求者應繼續使用原有的連結進行訪問,類似302
  3. 4xx
    1. 400 Bad Request 請求報文中存在語法錯誤
    2. 401 Unauthorized 未經授權,當瀏覽器初次收到401響應,會彈出認證用的對話方塊
    3. 403 Forbidden 伺服器拒絕
    4. 404 Not Found 伺服器上沒找到請求的資源
  4. 5xx
    1. 500 Internal Server Error 內部伺服器出錯
    2. 503 Service Unavailable 伺服器超負荷或者正在停機維護

WEB伺服器

  1. 代理
    1. 快取代理 將資源的副本儲存在代理伺服器上
    2. 透明代理 不對報文做任何加工處理
  2. 閘道器
    1. 閘道器能把HTTP請求轉換成非HTTP請求
    2. 閘道器可以提高通訊的安全性
  3. 隧道 保證客戶端和伺服器進行安全的通訊
  4. 頁面快取 分為客戶端快取和代理伺服器快取

HTTP首部

  1. 通用首部欄位

    首部欄位名 說明
    Cache-Control 控制快取的行為
    Connection 逐跳首部、連線的管理
    Date 建立報文的日期時間
    Paragma 報文指令
    Trailer 報文末端的首部一覽
    Transfer-Encoding 指定報文主題的傳輸編碼方式
    Upgrade 升級為其他協議
    Via 代理伺服器相關資訊
    Warning 錯誤通知
    Accept 使用者代理可以處理的媒體型別
    Accept-Charset 優先的字符集
    Accept-Encoding 優先的內容編碼
    Accept-Language 有限的語言
    Authorization Web認證資訊
    Exepect 期待伺服器的特定行為
    From 使用者的電子郵件
    Host 請求資源所在的伺服器
    If-Match 比較實體標記(ETag)
    If-Modified-Since 比較資源的更新時間
    If-None-Match 比較實體標記
    If-range 資源未更新時傳送實體Byte的範圍請求
    If-Unmodified-Since 比較資源的更新時間
    Max-Forwards 最大傳輸跳數
    Proxy-Authorization 代理伺服器要求客戶端的認證資訊
    Range 實體的位元組範圍請求
    Referer 對請求中的URI的原始獲取方
    TE 傳輸編碼的優先順序
    User-Agent HTTP 客戶端程式的資訊
  2. 響應首部欄位

    首部欄位名 說明
    Accept-Ranges 是否接受範圍請求
    Age 推算資源建立經過的時間
    ETag 資源的匹配資訊
    Location 另客戶端重定向至指定URI
    Proxy-Authenticate 代理伺服器對客戶端的認證資訊
    Petry-After 對再次發起請求的時機要求
    Server HTTP伺服器的安裝資訊
    Vary 代理伺服器快取的管理資訊
    WWW-Authenticate 伺服器對客戶端的認證資訊
  3. 實體首部欄位

    首部欄位名 說明
    Allow 資源可支援的HTTP方式
    Content-Encoding 實體主體使用的編碼方式
    Content-Language 實體主體的自然語言
    Content-Length 實體主體的大小(位元組)
    Content-Location 代替對應資源的URI
    Content-MD5 實體主體的報文摘要
    Content-Range 實體主體的位置範圍
    Content-Type 實體主體的媒體型別
    Expires 實體主體過期的日期時間
    Last-Modified 資源最後修改日期時間
  4. 欄位詳解

    1. Accept 可以通知伺服器,客戶端可以接受的媒體型別 可以設定多種,可以設定權重 -q 0到1
    2. Etag 伺服器通過Etag來確定需要訪問的資源

HTTPS

  1. HTTP的缺點

    1. 通訊使用明文,內容可能會被竊聽
    2. 不驗證通訊方的身份,可能遭遇偽裝攻擊
    3. 無法驗證報文的完整性,可能會被篡改
  2. HTTPS

    1. 利用SSL協議,將HTTP內容封裝起來,交給TCP進行傳輸

    2. HTTPS過程

      1. 客戶端傳送Client Hello 報文開始SSL通訊

      2. 當伺服器可以進行SSL通訊時,會返回Server Hello報文

      3. 伺服器傳送Certificate報文,包含公開金鑰

      4. 最後傳送Server Hello Done 報文 SSL握手結束

      5. 客戶端一Client Key Exchange 報文迴應,使用公鑰加密

      6. 客戶端繼續傳送Change Cipher Spec 報文,提醒伺服器,之後按公鑰加密

      7. 客戶端傳送Finished報文,協商連結是否建立成功

      8. 伺服器傳送Change Cipher Spec報文

      9. 伺服器同樣傳送Finished報文

      10. 伺服器和客戶端Finished報文交換完畢後,SSL連結建立完成

      11. 之後採用共享金鑰加密傳送內容

        在這裡插入圖片描述

Session和Cookie

  1. 伺服器根據使用者登陸資訊為其生成Session,並把包含這個Session id的Cookie 傳送給客戶端
  2. 客戶端以後在訪問就會帶著Cookie傳送
  3. Cookie新增HttpOnly避免XSS攻擊

HTTP攻擊

  1. 主動攻擊 SQL注入和OS命令注入

  2. 跨站指令碼攻擊和跨站點請求偽造,也就是利用釣魚網站進行攻擊