检查消息的 HTTP 头

请求或响应消息的每个 HTTP 头由头名称和头值组成。 如果需要, CICS® 会存储此信息以供应用程序访问。 应用程序可以接收指定头的值,或浏览请求或响应的所有头的名称和值。 您还可以将从头中获取的结构化日期和时间戳记字符串转换为 ABSTIME 格式。

关于此任务

您的应用程序可能需要检查头中的信息以处理请求或响应以及构造后续消息。
  • TE 头通知应用程序分块的响应消息中是否允许存在尾部头。
  • 条件头可以对应用程序提供指示信息,例如,仅当响应文档更改后才应答。
除非您知道 HTTP 请求或响应的确切格式,否则您的应用程序不得依赖于任何特定头的存在,这是因为 Web 客户机和服务器发送的头可能不一致。

某些 HTTP 头包含日期和时间戳记。 CICS 提供 CONVERTTIME 命令,用于将架构日期和时间戳记字符串的公共格式转换为 ABSTIME 格式,以供应用程序使用。

标准 HTTP 头在 HTTP/1.1 规范 (RFC 2616) 和 HTTP/1.0 规范 (RFC 1945) 中描述。 CICS Web Support 的 HTTP 头参考 说明了 CICS Web Support 中 HTTP 头的一般用途,以及 CICS Web Support 对消息上接收到的特定头执行的操作。 CICS 忽略某些 HTTP 头,并且用户应用程序必须在响应中采取相应操作。 要获取有关每个 HTTP 头的含义和正确用法的详细指示信息和需求,请查看 HTTP 规范。

如果消息包含任何尾部头,那么可以使用 EXEC CICS WEB 命令以与标准头相同的方式读取这些头。 消息上的尾部头指定作为尾部头发送的所有 HTTP 头的名称。

要检查和处理 HTTP 头:

过程

  • 要检查特定 HTTP 头的内容,请使用 WEB READ HTTPHEADER 命令。
    您的应用程序必须提供一个用于接收头内容的缓冲区。 如果请求中不存在头,那么 CICS 会返回 NOTFND 条件。
  • 要浏览请求或响应中的所有头:
    1. 使用 WEB STARTBROWSE HTTPHEADER 命令开始浏览标题行。
    2. 使用 WEB READNEXT HTTPHEADER 命令检索每行的头名称和头值。
      您的应用程序必须提供两个缓冲区:一个用于接收头名称,另一个用于接收其内容。 当读取了所有头时, CICS 将返回 ENDFILE 条件。
    3. 使用 WEB ENDBROWSE HTTPHEADER 命令在程序检索到所有感兴趣的头信息时结束浏览。
  • 要转换 HTTP 头中提供的架构日期和时间戳记字符串,请使用 WEB READ HTTPHEADER 命令将其接收到缓冲区中,然后使用 CONVERTTIME 命令对其进行处理。
    您无需标识日期和时间戳记的格式;CONVERTTIME 命令会识别并转换因特网上常用的三种不同日期和时间戳记格式。 它们分别是 RFC 1123(Web 标准)、RFC 850(较早的格式)和 ASCtime(C 函数的输出)。
    应用程序可以使用 FORMATTIME 命令将 ABSTIME 转换为其他格式。