HTTP知識點記錄
阿新 • • 發佈:2018-11-01
Http頭
-
Http1.0沒有長連結, Http1.1預設長連結,是為了避免不斷的建立連結,斷開連結的消耗,並且可以不得到確認繼續請求,提交響應速度。
-
Http分為請求報文和相應報文
- 請求報文
- 報文首部
- 請求行
- 請求首部欄位
- 通用首部欄位
- 實體首部欄位
- 其他
- 空行
- 報文主體
- 報文首部
- 響應報文
- 報文首部
- 狀態行
- 響應首部欄位
- 通用首部欄位
- 實體首部欄位
- 其他
- 空行
- 報文主體
- 報文首部
- 請求報文
-
Http通過編碼格式的方式來提升傳輸速率,並且分塊傳送
-
Http使用Rang請求部分內容
-
Http使用Accept Accept-Charset Accept-Encoding Accept-Language Content-Language 來進行內容協商,內容協商是指國際化
HTTP狀態碼
- 2xx
- 200 OK 正常處理
- 204 請求處理成功,但沒有資源可以返回 返回的響應報文中不含實體的主體部分
- 206 伺服器成功響應了範圍請求 響應報文中包含由Content-Range 指定範圍的實體內容
- 3xx
- 301 永久重定向 該狀態碼錶示請求的資源已被分配了新的URI,自動轉到新位置,按Location首部欄位提示的URI重新儲存
- 302 Found 臨時重定向 該狀態碼錶示請求的資源被分配了新的URI,本次希望使用者以新的URI訪問,但可以繼續按當前URI訪問
- 303 See Other 該狀態碼錶示由於請求對應的資源存在另一個URI,應使用GET方法定向獲取請求的資源
- 304 Not Modififed 客戶端傳送附帶條件的請求,伺服器端允許請求返回資源,但是條件未滿足,不返回任何主體
- 307 Temporary Redirect 臨時重定向 ,伺服器目前從不同的位置響應網頁請求,但請求者應繼續使用原有的連結進行訪問,類似302
- 4xx
- 400 Bad Request 請求報文中存在語法錯誤
- 401 Unauthorized 未經授權,當瀏覽器初次收到401響應,會彈出認證用的對話方塊
- 403 Forbidden 伺服器拒絕
- 404 Not Found 伺服器上沒找到請求的資源
- 5xx
- 500 Internal Server Error 內部伺服器出錯
- 503 Service Unavailable 伺服器超負荷或者正在停機維護
WEB伺服器
- 代理
- 快取代理 將資源的副本儲存在代理伺服器上
- 透明代理 不對報文做任何加工處理
- 閘道器
- 閘道器能把HTTP請求轉換成非HTTP請求
- 閘道器可以提高通訊的安全性
- 隧道 保證客戶端和伺服器進行安全的通訊
- 頁面快取 分為客戶端快取和代理伺服器快取
HTTP首部
-
通用首部欄位
首部欄位名 說明 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 客戶端程式的資訊 -
響應首部欄位
首部欄位名 說明 Accept-Ranges 是否接受範圍請求 Age 推算資源建立經過的時間 ETag 資源的匹配資訊 Location 另客戶端重定向至指定URI Proxy-Authenticate 代理伺服器對客戶端的認證資訊 Petry-After 對再次發起請求的時機要求 Server HTTP伺服器的安裝資訊 Vary 代理伺服器快取的管理資訊 WWW-Authenticate 伺服器對客戶端的認證資訊 -
實體首部欄位
首部欄位名 說明 Allow 資源可支援的HTTP方式 Content-Encoding 實體主體使用的編碼方式 Content-Language 實體主體的自然語言 Content-Length 實體主體的大小(位元組) Content-Location 代替對應資源的URI Content-MD5 實體主體的報文摘要 Content-Range 實體主體的位置範圍 Content-Type 實體主體的媒體型別 Expires 實體主體過期的日期時間 Last-Modified 資源最後修改日期時間 -
欄位詳解
- Accept 可以通知伺服器,客戶端可以接受的媒體型別 可以設定多種,可以設定權重 -q 0到1
- Etag 伺服器通過Etag來確定需要訪問的資源
HTTPS
-
HTTP的缺點
- 通訊使用明文,內容可能會被竊聽
- 不驗證通訊方的身份,可能遭遇偽裝攻擊
- 無法驗證報文的完整性,可能會被篡改
-
HTTPS
-
利用SSL協議,將HTTP內容封裝起來,交給TCP進行傳輸
-
HTTPS過程
-
客戶端傳送Client Hello 報文開始SSL通訊
-
當伺服器可以進行SSL通訊時,會返回Server Hello報文
-
伺服器傳送Certificate報文,包含公開金鑰
-
最後傳送Server Hello Done 報文 SSL握手結束
-
客戶端一Client Key Exchange 報文迴應,使用公鑰加密
-
客戶端繼續傳送Change Cipher Spec 報文,提醒伺服器,之後按公鑰加密
-
客戶端傳送Finished報文,協商連結是否建立成功
-
伺服器傳送Change Cipher Spec報文
-
伺服器同樣傳送Finished報文
-
伺服器和客戶端Finished報文交換完畢後,SSL連結建立完成
-
之後採用共享金鑰加密傳送內容
-
-
Session和Cookie
- 伺服器根據使用者登陸資訊為其生成Session,並把包含這個Session id的Cookie 傳送給客戶端
- 客戶端以後在訪問就會帶著Cookie傳送
- Cookie新增HttpOnly避免XSS攻擊
HTTP攻擊
-
主動攻擊 SQL注入和OS命令注入
-
跨站指令碼攻擊和跨站點請求偽造,也就是利用釣魚網站進行攻擊