HTTP基礎知識

看完 <<圖解HTTP>> 的一些小收穫,也至關於讀書筆記


TCP/IP從上往下分爲四層

  1. 應用層: 向用戶提供應用服務時通訊的活動t
  2. 傳輸層: 提供處於網絡鏈接中兩臺計算機之間數據傳輸
  3. 網絡層: 處理網絡上流動的數據包
  4. 數據鏈路層: 處理鏈接網絡硬件部分

HTTP方法

  1. Get: 指定資源經服務端解析後返回響應內容, 建議只用來讀取數據,而不對數據進行操做
  2. Post: 傳輸實體主體,可能會建立新的資源或修改原始資源
  3. Put: 傳輸文件,不帶驗證,不推薦使用
  4. Head: 和Get相似,但不返回報文主體也就是資源的文本部分
  5. Delete: 請求服務器刪除資源,不帶驗證,不推薦使用
  6. Options: 查詢針對請求URI指定資源支持的方法
  7. Trace: 讓Web服務器將請求通訊環回給客戶端
  8. Connect: 在與代理服務器通訊時創建隧道

HTTP狀態碼

1xx(信息狀態碼)

表示服務端正在處理請求

2xx(成功狀態碼)

  • 200 OK:從客戶端發出的請求被服務端正在處理
  • 204 No Content:服務端接收的請求已成功處理,不返回實體
  • 206 Partical Content: 代表客戶端進行了範圍請求,服務器處理了部分Get請求

3xx(重定向狀態碼)

  • 301 Moved Permanently:請求的資源已分配新URI(永久重定向),若是不是一個Get或Head請求,禁止進行自動重定向而是應該讓用戶確認
  • 302 Found:請求的資源已分配新URI,本次使用新URI訪問(臨時性重定向),若是不是一個Get或Head請求,禁止進行自動重定向而是應該讓用戶確認
  • 304 Not Modified:表示請求資源未修改過,直接使用緩存

4xx(客戶端錯誤狀態碼)

  • 400 Bad Request:請求報文存在語法錯誤
  • 401 Unauthorized:須要認證或者認證失敗
  • 403 Forbidden:禁止訪問
  • 404 Not Found:服務器沒法找到請求的資源

5xx(服務器錯誤狀態碼)

  • 500 Internal Server Error:服務器執行請求時發生錯誤
  • 503 Service Unavailable:服務器超負載或停機維護

與HTTP協做的Web服務器

  • 代理:接收客戶端發送請求並轉發給其餘服務器,轉發時附加Via首部字段標記通過的主機信息.瀏覽器

    • 緩存代理:預先將資源副本保存在代理服務器上
    • 透明代理:轉發時不進行任何加工
  • 網關:將Http請求轉化爲其餘協議通訊
  • 隧道:創建服務器的通訊線路,使用SSL加密,保證安全通訊

HTTP首部

通用首部字段:請求和響應報文雙方都會使用的首部

  • Cache-Control 操做緩存工做機制緩存

    • public:其餘用戶也可利用緩存
    • private:響應只以特定用戶做爲對象
    • no-cache:不管本地緩存是否過時必須先與服務器確認返回的響應是否發生了變化,未發生變化才返回
    • no-store:禁止緩存,每次都要下載完整的響應
    • max-age:當時間小於指定時間時,直接使用緩存
    • max-stable:容許讀取時間小於指定時間的緩存對象(即便過時)
    • min-fresh:若是資源超過指定時間後仍有用則返回
    • only-if-cached:要求來自緩存,無所謂新鮮
    • must-revalidate:本地緩存未過時前,直接使用本地緩存,過時後每次向服務器進行有效性校驗
    • no-transform:不遜於轉換實體媒體類型
  • Connection安全

    • 任意首部字段名:刪除指定字段後再進行轉發
    • close:HTTP/1.1默認是持久化鏈接,使用close來斷開鏈接
  • Date 代表建立HTTP報文時間和日期
  • Trailer:事先說明在報文主體後記錄了哪些首部字段
  • Transfer-Encoding:規定傳輸報文主體時編碼方式
  • upgrade:能夠指定一個不一樣的通訊協議
  • Via:追蹤客戶端與服務器之間的請求和響應報文
  • Warning:警告碼 警告的主機端口號 警告內容 日期時間

請求首部字段

  • Accept:用戶可處理的媒體類型及其相對優先級
  • Accept-Charset:支持的字符集
  • Accept-Encoding:支持的字符編碼(Unicode字符集有UTF-8,UTF-18等多種字符編碼方式)
  • Accept-Language:支持的天然語言集
  • Authorization:告知服務器用戶代理的認證信息
  • Exceprt:告知服務器指望出現的行爲
  • Host:明確指出請求主機名
  • If-xxx:判斷條件爲真時CIA執行請求
  • Max-Forwards:最大轉發次數
  • proxy-Authorization:接收到代理服務器發來的認證質詢時,客戶端發送包含此首部請求
  • Referer:告知服務器請求的原始資源的URI
  • TE:告知服務器客戶端能處理響應的傳輸編碼方式與相對優先級
  • User-agent:將建立請求的用戶代理標示傳達給服務器

響應首部字段

  • Age:表示實體產生到如今過了多久,單位爲秒
  • ETag:實體惟一標識服務器

    • 強Tag:不管實體發生多細微變化都改變
    • 弱Tag:資源根本改變才改變
  • Location:將響應接收放引導至某個與請求URI位置不一樣的資源
  • proxy-Authenticate:將代理服務器要求的認證信息發送給客戶端
  • Retry-After:告知客戶端在多久以後再次發送請求
  • Server:告知客戶端當前服務器上安裝的HTTP服務應用程序信息
  • Vary:代理服務器接受到源服務器包含vary請求後,再次收到請求僅返回相同vary首部的緩存,其餘到源服務器從新獲取

實體首部字段

  • Allow:客戶端可以支持Request-URI指定資源的全部的HTTP方法
  • Content-Encoding:客戶端服務器對實體主題部分的內容編碼方式
  • Expires:資源失效日期,在此日期前,緩存一直有效

Cookie字段

  • Set-Cookiecookie

    • expires:Cookie有效期,默認到瀏覽器關閉前
    • path:限制cookie發送範圍目錄,默認文檔所在目錄
    • domain:指定Cookie能夠送達的主機名,結尾一致時也能夠送達
    • secure:僅在HTTPS纔可發送Cookie
    • HttpOnly:使JS腳本沒法得到Cookie
相關文章
相關標籤/搜索