文章目錄
- HTTP
-
- 概念
- 作用
- http 請求
- http 頭部
- http 連接配接
- 各版本的差別
-
-
-
- http1.0
- http1.1
- http2.0
- http3.0
-
-
- HTTPS
-
- 概念
- 作用
- 工作原理
- 優點
- 缺點
- http 和 https 差別
- http 狀态碼
-
- 重定向
-
-
- 什麼是重定向?
- 什麼時候會重定向?
-
- 301 和 302
-
-
- 為什麼盡量使用 301?
-
- 如何解決 304 問題?
HTTP
概念
超文本傳輸協定(Hyper Text Transfer Protocol),是用戶端和伺服器端請求和應答的标準(TCP),屬于應用層。http 的生命周期通過 Request 來界定,也就是 Request 一個 Response(可發送多個Request,接收多個Response,但Request和Response是一對一關系)。
作用
從WWW 伺服器傳輸超文本到本地浏覽器的傳輸協定,使浏覽器更加高效,使網絡傳輸減少。
http 請求
GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT
http 頭部
通用頭(通用資訊),請求頭,響應頭,實體頭(描述實體)
http 連接配接
實質上是TCP協定的長連接配接和短連接配接。
短連接配接: http1.0 預設使用短連接配接,即每次請求都要重新發起連接配接,資料交換結束即關閉連接配接。
長連接配接: 從 http1.1 起預設使用長連接配接,連接配接建立後不斷開,然後再進行資料發送和接收,用戶端和伺服器之間用于傳輸資料的 TCP 連接配接不會關閉,用戶端再次通路這個伺服器時,會繼續使用這一條已經建立的連接配接。
各版本的差別
http1.0
1、預設使用短連接配接。
2、使用 If-Modified-Since,Expires來做緩存判斷的标準。
3、存在帶寬浪費現象,比如用戶端僅需要對象的一部分,而服務端則将整個對象送來。
http1.1
1、預設使用長連接配接。
2、引入更多的緩存判斷标準:Etag、If-None-Match等。
3、允許請求資源的某個部分。
4、新增了24個狀态碼。
http2.0
1、允許多路複用,做到同一個連接配接并發處理多個請求。
2、支援二進制編碼。
3、将相同的首部進行壓縮,不重複傳輸。
4、流量控制,對不同的流的流量進行精确控制。
5、支援伺服器端推送(CSS和JS一起發送),不僅隻是用戶端發起請求,服務端可以自己發送一些資料。
http3.0
1、QUIC (Quick UDP Internet Connections)是基于UDP協定的。
2、解決了 TCP 的隊頭阻塞問題(某一個流的資料有丢包,則同樣會阻塞在它之後傳輸的流資料傳輸)。而 http3.0 中不同的流之間真正的實作互相獨立傳輸,互不幹擾。
3、在切換網絡時的依舊保持連接配接。
HTTPS
概念
在 http 下加入 SSL/TSL 層,安全基礎是 SSL,加密的詳細内容需要 SSL。【https的SSL加密是在傳輸層實作的】
作用
建立一個資訊安全通道,確定資料的傳輸和網站的真實性。
工作原理

1、客戶使用 https url 通路伺服器,建立 SSL 連接配接。
2、伺服器接收到請求後,會将包含公鑰的證書傳回給用戶端。
3、用戶端和服務端協商 SSL 連接配接的安全等級,即加密等級。
4、用戶端浏覽器通過安全等級建立會話密鑰(對稱加密),通過公鑰加密會話密鑰并傳送給服務端(非對稱加密)。
5、伺服器通過自己的私鑰解密出會話密鑰,與用戶端之間建立通信。
- 非對稱加密:RSA、DSA
- 對稱加密:AES、RC4
- HASH加密:MD5、SHA1
優點
1、可以認證使用者和伺服器,確定資料發送正确。
2、比 http 協定安全,確定資料的完整性。
3、現行架構下最安全的解決方案,增加了攻擊成本。
缺點
1、https 握手階段費時,頁面加載時間延長。
2、https 緩存不如 http 高效,增加資料開銷。
3、SSL 證書消耗成本,功能越強大的證書費用越高。
http 和 https 差別
1、http 未加密,傳輸内容都是明文;https 則加密傳輸,安全性更高。
2、https 協定需要ca證書,費用較高。
3、http 的端口為80;https 的端口為443。
4、http 的連接配接是無狀态的(其資料包的發送、傳輸和接收都是互相獨立的);https 的連接配接是有狀态的。
http 狀态碼
狀态碼 | 類别 | 原因 |
---|---|---|
1xx | Information(資訊性) | 接收的請求正在處理 |
2xx | Success(成功) | 請求正常處理完畢 |
3xx | Redirection(重定向) | 需要進行附加操作以完成請求 |
4xx | Client Error(用戶端錯誤) | 伺服器無法處理請求 |
5xx | Server Error(服務端錯誤) | 伺服器處理請求出錯 |
狀态碼 | 解釋 |
---|---|
100 | 伺服器收到了請求, 請用戶端繼續發送 |
200 | 請求成功,一般用于 GET 與 POST 請求 |
201 | 成功請求并建立了新的資源 |
202 | 已經接受請求,但未處理完成 |
203 | 非授權資訊 |
204 | 伺服器成功處理,但未傳回内容 |
301 | 請求的資源已被永久的移動到新URL,傳回資訊會包括新的URL |
302 | 資源臨時被移動,用戶端應繼續使用原有URL |
303 | 使用GET和POST請求檢視其它位址 |
304 | 請求已被允許,但文檔的内容并沒有改變 |
305 | 所請求的資源必須通過代理通路 |
307 | 使用GET請求重定向 |
400 | 請求無效,前端資料與後端不一緻 |
401 | 目前請求需要使用者驗證 |
403 | 伺服器已經得到請求,但是拒絕執行 |
404 | 伺服器無法根據用戶端的請求找到資源(網頁) |
405 | 用戶端請求中的方法被禁止 |
408 | 伺服器等待用戶端發送的請求時間過長,逾時 |
410 | 用戶端請求的資源已經不存在 |
413 | 由于請求的實體過大,伺服器無法處理,是以拒絕請求 |
414 | 請求的URL過長 |
415 | 伺服器無法處理請求附帶的媒體格式 |
416 | 用戶端請求的範圍無效 |
500 | 伺服器内部錯誤,無法完成請求 |
501 | 伺服器不支援請求的功能,無法完成請求 |
503 | 由于超載或系統維護,伺服器暫時的無法處理用戶端的請求 |
505 | 伺服器不支援請求的HTTP協定的版本 |
重定向
什麼是重定向?
從一個位址跳轉到另一個位址。
什麼時候會重定向?
1、網站調整(如改變網頁目錄結構)
2、網頁被移到一個新位址
3、網頁擴充名改變
301 和 302
301 是指請求的資源已被永久的移動到新URL,傳回資訊會包括新的URL;而 302 是指資源臨時被移動,用戶端應繼續使用原有的URL。
為什麼盡量使用 301?
因為網址劫持,比如使用 302 跳轉時,網址會臨時定位到另一個網址,搜尋引擎的結果所顯示的仍然是網址A,但是所用的網頁内容網址B上的内容,這就是網址劫持。而 301 跳轉則抛棄了舊網址,永久轉移到新的網址。
如何解決 304 問題?
304 是指請求已被允許,但文檔的内容并沒有改變。出現 304 是因為先在本地緩存了通路的資源。
解決: 強制重新整理、禁用緩存
參考文章:https://www.jianshu.com/p/995a3000f7d6?isappinstalled=0、https://blog.csdn.net/glpghz/article/details/106063833