文章目錄
- 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、支持服務器端推送(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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272171.html
標籤:其他
下一篇:Java學習筆記11
