解釋 ASP.NET Core 中的 HTTP 請求-響應生命週期。
HTTP 代表超文字傳輸協議。它是一種應用層協議。每當您在瀏覽器中訪問網站時,它都會使用 HTTP 協議與伺服器通訊。
HTTP 請求包含一個動詞,例如 GET、POST、PUT、Delete 等。動詞指示 HTTP 請求的型別。請求還包含其嘗試訪問的資源的路徑。此外,所有 HTTP 請求都以鍵值對格式提供一個或多個標頭,以向伺服器提供其他資料。最後,請求可以包含主體,它可能表示表單內容。
當伺服器收到 HTTP 請求時,它會處理該請求並響應客戶端。響應告訴客戶端請求是否成功。
ASP.NET Core 是一個在伺服器上執行的 Web 應用程式框架。當瀏覽器向伺服器發出 HTTP 請求時,框架會攔截該請求。然後,它使用路由將該請求路由到編寫用於處理該特定型別請求的方法。程式碼執行並建立結果後,框架會將響應傳送到請求網頁的瀏覽器。
ASP.NET Core 提供了處理請求的所有功能。它包括確保請求有效、路由請求、管理身份驗證和授權以及生成對瀏覽器的響應。
當 HTTP 請求到達伺服器時,Kestrel(ASP.NET Core 中預設的內建 Web 伺服器)會接收它。它處理請求並構建一個表示該請求的 HTTPContext 物件,您的應用程式程式碼可以使用該物件為該請求建立響應。您可以傳送 HTML 響應或 JSON/XML 資料。
應用程式處理完請求並生成響應後,它會將響應返回給 Kestrel(Web 伺服器)。Kestrel 將響應(可能是物件)轉換為原始 HTTP 響應,並透過網路將其傳送到瀏覽器。這完成了一個請求-響應生命週期。
現在,您可以將 ASP.NET Core Web 伺服器直接公開給外部流量,並且它可以處理它。但是,最佳實踐是在外部網路和託管應用程式的 Web 伺服器之間新增另一層間接層(反向代理)。
反向代理只是一個伺服器軟體,它接收傳入請求並將它們轉發到 Web 伺服器。您將反向代理公開給外部流量(即網際網路),並將 Web 伺服器安全地保留在防火牆後面,只將其公開給反向代理。沒有外部流量可以直接與 Web 伺服器通訊。
反向代理提供了兩個重要的好處:
擴充套件性:隨著應用程式流量的增長,您可以新增任意數量的 Web 伺服器來處理流量,而無需更改 Web 伺服器的 IP 地址。因為外部流量只與反向代理通訊,所以它不需要知道 Web 伺服器的地址。
安全性:因為反向代理暴露於外部網路,所以它們的設計考慮了安全性,而不是典型的 Web 伺服器。您的 Web 伺服器可以保留在防火牆後面。您還可以終止反向代理上的 SSL 連線並在 Web 伺服器和反向代理之間傳輸未加密的資料。
此外,反向代理處理其他任務,例如在 Web 伺服器崩潰時重新啟動它們或快取靜態檔案等。
IIS 是 Windows 伺服器上最流行的反向代理,而您可以在 Mac 或 Linux 伺服器上使用 Nginx、Apache 或 HAProxy。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP