天天看點

http、https以及狀态碼超全詳解HTTPHTTPShttp 和 https 差別http 狀态碼

文章目錄

  • 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加密是在傳輸層實作的】

作用

建立一個資訊安全通道,確定資料的傳輸和網站的真實性。

工作原理

http、https以及狀态碼超全詳解HTTPHTTPShttp 和 https 差別http 狀态碼

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 差別

http、https以及狀态碼超全詳解HTTPHTTPShttp 和 https 差別http 狀态碼

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

繼續閱讀