第十二章 CSP 中的 HTTP 请求 - CSP 运行时环境

简介: 第十二章 CSP 中的 HTTP 请求 - CSP 运行时环境

第十二章 CSP 中的 HTTP 请求 - CSP 运行时环境

CSP 的主要任务是提供动态内容以响应传入的 HTTP(超文本传输协议)请求。本节介绍 CSP 如何处理 HTTP 请求的基础知识。

HTTP 是一种简单的协议,其中客户端向服务器发出请求。 HTTP 是一种无状态协议;客户端和服务器之间的连接只持续为服务请求所需的时间。每个 HTTP 请求都包含一个请求标头,该标头指定请求类型(例如 GETPOST)、一个 URL 和一个版本号。请求还可能包含附加信息。 CSP 自动确定它应该处理哪些 HTTP 请求,将它们分派到运行在 Caché 服务器上的适当类,并将请求信息打包成易于使用的对象(例如对象中的 %CSP.Request)。


CSP 运行时环境


下图显示了 CSPHTTP 请求的架构:


image.png

CSP 应用程序的运行时环境包括以下内容:

  • HTTP 客户端(例如 Web 浏览器)
  • HTTP 服务器(Web 服务器,例如 ApacheIIS
  • CSP 网关(Web 服务器的 Caché 插件)
  • Caché 服务器(CSP 服务器在其上运行请求的 CSP 应用程序)


HTTP 请求处理


下图说明了 CSP 处理 HTTP 请求时的事件流:


dd7f6fda57b0470e809a02a1229567ab_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


  1. 浏览器(或类似的 Web 客户端)发出 HTTP 请求。
  2. Web 服务器确定这是一个 CSP 请求并将其分派到 CSP 网关(安装在 Web 服务器上)。 2a Web 服务器可能会提供静态内容,具体取决于应用程序配置。
  3. CSP 网关重新打包请求并将其发送到正确的缓存服务器。
  4. Caché 服务器对消息进行解码并确定请求是针对静态页面还是针对 CSP 类的。

如果请求是针对静态文件(例如 .html.jpg 文件),Caché 服务器会在本地文件系统中找到该文件并将其内容发送回客户端。 (请注意,如果提供的文件包含 Unicode 文本,CSP 会使用 BOM 来确定要使用的正确编码。BOM 必须存在于 Unicode 文本文件中。)

如果是针对一个类,它会确定哪个事件处理类(应用程序的一部分)将处理该事件并调用类 Page 方法。

  1. age 方法或静态页面的输出作为 HTTP 响应发送回 CSP 网关。
  2. CSP 网关将 HTTP 响应传递给 Web 服务器(具体来说,响应通过 CSP 网关流回 Web 服务器)。
  3. Web 服务器将响应返回给 Web 浏览器,然后浏览器处理响应——在 HTML 的情况下,它会显示它。


Web 服务器和 CSP 网关


HTTP 请求在 HTTP 客户端(例如 Web 浏览器)向 Web 服务器发送消息时开始。 CSP 网关是 Web 服务器(例如 IISApache)用来处理特定类型事件的 DLL 或共享库。如果满足以下条件,CSP 网关将处理 HTTP 请求:

  • URL 的目录路径具有在 Web 服务器中定义的正确访问权限。

CSP 网关提供以下功能:

  1. 它提供最少的处理并将其大部分工作卸载到 Caché 服务器,为 Web 服务器提供更多资源。
  2. 它维护一个与命名 CSP 服务器的连接池。
  3. 它提供故障转移选项以允许使用多个互连的 CSP 服务器。


CSP 服务器


CSP 服务器是一个运行在 Caché 服务器上的进程,它专门为来自 CSP 网关的请求提供服务。每个 Caché 服务器可以根据需要运行任意数量的 CSP 服务器进程(受机器类型的限制;CSP 服务器不计入许可证计算)。

在处理无状态请求时,每个 CSP 服务器进程可以支持来自许多不同客户端的请求。在状态保持模式下,一个进程专用于处理来自一个客户端的请求,直到状态保持模式被关闭。


注意:Caché 的主要优势之一是应用程序服务器和数据服务器之间没有真正的区别。可以根据需要将应用程序配置为使用尽可能多或尽可能少的机器。这是独立于应用程序逻辑和数据库模式完成的。特定系统是应用程序服务器还是数据服务器(或两者)只是配置问题。

相关文章
|
16天前
|
XML Java 数据格式
Servlet 教程 之 Servlet 客户端 HTTP 请求 3
该教程展示了如何在Servlet中处理客户端HTTP请求,特别是获取HTTP头信息。示例代码创建了一个名为`DisplayHeader`的Servlet,它扩展了`HttpServlet`并重写了`doGet`方法。在`doGet`中,使用`HttpServletRequest`的`getHeaderNames()`遍历所有头部,显示其名称和对应值。Servlet在TomcatTest项目下,通过`web.xml`配置映射到`/TomcatTest/DisplayHeader`路径。
29 14
|
26天前
|
API
Arkts http数据请求
Arkts http数据请求
|
16天前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
23 8
|
5天前
|
缓存 负载均衡 网络协议
【亮剑】一次完整的 HTTP 请求过程,包括 DNS 解析、TCP 握手、HTTP 请求和响应等环节
【4月更文挑战第30天】本文介绍了HTTP请求的重要性和详细过程。首先,DNS解析将域名转换为IP地址,通过递归和迭代查询找到目标服务器。接着,TCP三次握手建立连接。然后,客户端发送HTTP请求,服务器处理请求并返回响应。最后,理解这个过程有助于优化网站性能,如使用DNS缓存、HTTP/2、Keep-Alive、CDN和负载均衡等实践建议。
|
6天前
|
SQL DataWorks Java
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
21 1
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
|
7天前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
21 1
|
7天前
|
前端开发 API UED
AngularJS的$http服务:深入解析与进行HTTP请求的技术实践
【4月更文挑战第28天】AngularJS的$http服务是核心组件,用于发起HTTP请求与服务器通信。$http服务简化了通信过程,通过深入理解和实践,能构建高效、可靠的前端应用。
|
8天前
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
15 1
|
9天前
|
存储 缓存 开发框架
Flutter的网络请求:使用Dart进行HTTP请求的技术详解
【4月更文挑战第26天】了解Flutter网络请求,本文详述使用Dart进行HTTP请求
|
10天前
|
JSON 数据格式 索引
ES 查看索引的属性的http请求
在 Elasticsearch 中,要查看索引的属性,可以通过发送 HTTP 请求来执行以下操作: 1. **获取索引的映射(Mapping)**: 可以使用 `GET` 请求访问 Elasticsearch 的 `_mapping` 端点来获取特定索引的映射信息。 示例请求: ```http GET http://<elasticsearch_host>:<port>/<index_name>/_mapping ``` 2. **获取索引的设置(Settings)**: 可以使用 `GET` 请求访问 Elasticsearch 的 `_setting