网络术语 (WinHTTP)

开发使用 Microsoft Windows HTTP Services (WinHTTP) 的应用程序时,请务必了解与网络相关的以下概念和术语,尤其是与 HTTP 协议相关。

HTTP 事务

使用 HTTP 事务时,你正在与网络上其他位置的另一台计算机交换信息。 交换的信息可以是包含文本或多媒体的文件,也可以是数据库查询的结果。 通过网络交换的一条信息称为 资源。 通常,发送资源的计算机是服务器,接收该资源的计算机是客户端。 但是,客户端也可以将数据发布到服务器。 有时,HTTP 事务涉及中间层服务器。 中间层服务器从其他服务器收集多个资源,将信息编译为一个资源,并将该资源发送到客户端。

使用 HTTP 协议获取资源的过程需要在客户端和服务器之间交换一系列消息。 客户端通过发送请求资源的消息开始事务。 此消息称为 HTTP 请求,有时只是请求。 HTTP 请求由以下组件组成。

  • 方法、统一资源标识符 (URI) 、协议版本号
  • 标头
  • 实体正文

当服务器收到请求时,它会通过将消息发送回客户端来做出响应。 服务器发送的消息称为 HTTP 响应。 HTTP 响应由以下组件组成。

  • 协议版本号、状态代码、状态文本
  • 标头
  • 实体正文

响应要么指示无法处理请求,要么提供请求的信息。 根据请求的类型,这可以是有关资源的信息(例如其大小和类型),也可以是部分或全部资源本身。 包含部分或全部请求资源的响应部分称为“响应数据”或“实体正文”,在收到所有响应数据之前,响应不会完成。

有关 HTTP 事务和 HTTP 协议的详细信息,请参阅 RFC 2616,超文本传输协议 - HTTP/1.1。

代理服务器

尽管目标服务器最终会接收客户端发送的请求,但有时事务会首先通过代理服务器。 代理会截获请求,甚至可以在将请求发送到服务器之前修改请求。 当服务器响应时,响应还会在转发到客户端之前通过代理传递。 代理可以修改此响应中的标头。

通过拦截和转换网络事务,代理可以:

  • 通过监视潜在危险事务来保护客户端。
  • 使客户端能够使用客户端软件可能无法实现的协议进行通信。
  • 充当专用网络与公用网络之间的网关。

WinHTTP API 包含一个代理配置工具,可用于向 WinHTTP 提供有关截获 HTTP 事务的任何代理服务器的信息。 有关使用代理配置工具的信息,请参阅 ProxyCfg.exe,一个代理配置工具

同步和异步模式

有两种编程模型可用于使用 WinHTTP 通过网络获取资源,即同步和异步模型。 在同步模型中,在请求的操作完成或发生错误之前,对函数或方法的调用不会完成。 例如,当应用程序同步使用 WinHTTP 请求资源时,在收到请求的数据之前,它不会继续执行下一步。

另一方面,异步模型允许应用程序在等待检索资源时执行其他任务。 如果调用了另一个 WinHTTP 函数或方法,并且上一个操作尚未完成,该函数将返回错误。 异步使用 WinHTTP 时,组件对象模型 (COM) 事件和回调可用于通知应用程序 HTTP 操作的进度。

身份验证

身份验证是 HTTP 代理或 HTTP 服务器在允许访问资源之前验证用户的登录信息的过程。 Internet 上使用各种身份验证方案。 通常,用户的用户名和密码与授权列表进行比较,如果系统检测到匹配项,则会在用户的权限列表中指定的范围内授予访问权限。

WinHTTP 函数支持 HTTP 会话的服务器和代理身份验证。 WinHTTP 支持以下身份验证方案:基本、摘要 (请参阅 RFC 2617) 、 NTLM 身份验证、Negotiate/ Kerberos 和 Microsoft Passport 1.4。 有关身份验证的详细信息,以及在Microsoft Visual C++应用程序中使用身份验证的示例,请参阅 WinHTTP 中的身份验证

有关基本身份验证和 Passport 身份验证的安全注意事项的信息,请参阅 WinHTTP 安全注意事项