解释 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