分析器程序的输入
输入参数传递到 COMMAREA 中的分析器程序,提供有关请求特性和内容的信息,以及 URIMAP 定义提供的任何输入。 分析器程序可选择接受这些值并将它们作为输出参数传递,或它可根据它对请求内容的分析来动态地重设它们。
注意: 本主题包含产品敏感的编程接口和关联的指导信息。
分析器程序的参数 具有 COMMAREA 中所有参数的列表和技术描述。
输入参数包含以下各项,或指向它们的指针:
- 分析器参数列表的识别标识。
- 客户机和服务器 (作为 HTTP 服务器的 CICS ®) 的 冒号十六进制或 点分十进制 IP 地址。
- 请求是否为 HTTP 请求的指示符。
- 是否找到请求的匹配 URIMAP 定义的指示符。 如果该指示符为正,那么 URIMAP 定义可能已将其他输入参数传递到分析器程序。
- HTTP 版本。
- 请求方法。
- 为请求指定的主机名,从 Host 头或(对于绝对 URI)从请求 URL 获取。 对于 HTTP/1.1 请求,必需主机名,因此该参数总是传递到分析器。 对于 HTTP/1.0 请求,可能不提供主机名。
- URL 的路径部分。
- 为请求指定的任何查询字符串。
- 请求的 HTTP 头。
如果已使用分块的传输编码发送请求,那么尾部头不会与主请求头一起被传递到分析器程序。
- 请求主体(或请求主体的绝大部分)将存储在一个 32 KB 的存储器块中。 该请求主体是指向包含请求的独立存储器块的指针。
对于在使用 SSL 客户机认证的连接上接收到的 HTTP 请求,还传递以下参数:
- 从客户机证书获取的用户标识。
如果找到请求的匹配 URIMAP 定义并且已调用分析器程序,那么在以下参数已存在于 URIMAP 定义的情况下,将它们从 URIMAP 定义传递到分析器程序:
- 请求被传递到应用程序之前处理它的建议转换器程序的名称(URIMAP 定义中的 CONVERTER 属性)。
- 处理请求并提供响应的用户编写的建议应用程序的名称(URIMAP 定义中的 PROGRAM 属性)。
- 覆盖剩余处理阶段的建议别名事务的事务标识(URIMAP 定义中的 TRANSACTION 属性)。
- 要与别名事务关联的建议用户标识(URIMAP 定义中的 USERID 属性)。 如果客户机提供了用户标识,那么可以覆盖该用户标识。
如果您正在使用分析器程序(而不是 URIMAP 定义)来处理请求,并且您需要在这方面遵循 HTTP/1.1,那么必须按照 HTTP/1.1 规范中声明的规则编码您的分析器程序以执行 URL 比较。 按照这些规则,比较方案名和主机名不区分大小写,但比较路径区分大小写。 比较之前 URL 的所有组成部分都未转义。 当 CICS 将 URL 与 URIMAP 定义进行比较时,它遵循以下规则。
如果愿意,您还可以使用 EXEC CICS WEB API 命令检查 HTTP 请求。 使用 EXEC CICS WEB 命令可以增加您的请求分析的准确性和完整性,特别当检查内容和用法容易发生较大变化的 HTTP 头时。 EXEC CICS WEB 命令还简化了从请求中查找和抽取查询字符串或表单字段信息的过程,这可以确定后续处理。
您可以使用 EXTRACT TCPIP 命令获取有关正在处理的客户机请求的以下信息:
- Web 客户机的 IP 地址
- Web 客户机的主机名(已由 DNS 服务器识别)
- Web 客户机用于发送其连接请求的端口号
- 服务器的 IP 地址; 即,作为 HTTP 服务器的 CICS
- 使用的认证类型
- 使用中的 SSL 支持级别
- 与请求关联的 TCPIPSERVICE 资源定义