文章目录
- [第四十四章 Web 网关返回的 HTTP 响应标头](#第四十四章 Web 网关返回的 HTTP 响应标头)
第四十四章 Web 网关返回的 HTTP 响应标头
IRIS®
中的 Web
应用程序(包括基于 REST
的应用程序)通常负责制定完整的 HTTP
响应标头。出于性能原因,Web
网关默认将响应标头以及以下内容通过 Web
服务器直接流式传输到客户端。这种操作模式称为非解析标头 (NPH
) 方法。 Web
网关不会通过服务器提供的专用 API
函数将响应标头传回,从而授予托管 Web
服务器对响应标头的任何控制权。假设需要读取和解释响应头指令的是客户端而不是 Web
服务器。
然而,如果 Web
服务器需要解释响应标头,以便进一步调用 CSP
引擎生成的标头指令中隐含的基于 Web
服务器的功能,则这种假设就会失效。例如,通过调用输出过滤器来进一步调用处理响应(压缩和加密实用程序等)。通常发现此类输出过滤器不适用于根据非解析标头操作模式返回的 CSP
内容。
存在一种工具来指示 Web
网关通过托管 Web
服务器显式传递响应标头,而不是将它们直接流式传输到客户端。
要使用此功能,请设置以下 CSP
标头指令:CSP-nph: false
该指令必须在 OnPreHTTP()
方法中设置。例如:
java
<script language=objectscript method=OnPreHTTP arguments=""
returntype=%Boolean>
Do %response.SetHeader("CSP-nph", "false")
Quit 1 </script>
当设置为 false
时(Web
网关的默认设置为 true
),CSP-nph
指令可确保通过从 CSP
引擎返回的响应标头正确通知托管 Web
服务器有关响应的性质。结果,可以根据需要执行任何进一步的处理。这是解析标头模式。
当 Web
网关在解析标头模式下运行时,托管 Web
服务器会解释响应标头,并可能添加自己的标头指令。至少它会在响应中添加一个服务器标头。例如:
java
Server: Apache/2.0.48 (Win32)
OR:
Server: Microsoft-IIS/5.1
请注意,此功能仅适用于直接与 Web
服务器 API
配合使用的 Web
网关实现。换句话说:除了 CGI
之外的一切。
如果使用 Web Gateway CGI
模块并且需要此工具,则必须将 Web
服务器配置为使用 CSP CGI
模块的非NPH
版本。例如,使用 CSPcgi
而不是 nph-CSPcgi
。 CGI
模块名称中使用的 nph-
前缀是通知 Web
服务器不需要读取和解释模块返回的响应标头的标准方式:换句话说,在非解析标头模式下运行。
这些模块的解析版本和非解析版本之间的本质区别在于 HTTP
响应状态行的制定方式。这是标题块中的第一行。
对于已解析的标头,请按如下格式设置 HTTP
状态行的格式:
java
Status: <status_code>
示例:
java
Status: 200 OK
对于未解析的标头,HTTP
状态行的格式如下:
java
HTTP/1.1<status_code>
示例:
java
HTTP/1.1 200 OK
Web Gateway
附带的 CGI
模块会在内部自动处理这些差异。 CSP
引擎始终返回标准 HTTP
标头块 (2
)。