Qt HttpProxy 与 HttpCachingProxy:CONNECT 能力区别
区分 Qt 中支持 CONNECT 的 HttpProxy 与仅用于请求的 HttpCachingProxy 类型。
Qt 把能够建立隧道的 HTTP 代理与其仅用于缓存的 HTTP 代理类型区分开来。两个名称都含 HTTP,但连接能力不同。
| Qt 类型 | 连接角色 |
|---|---|
| HttpProxy | 面向出站 TCP 连接的 HTTP CONNECT 支持 |
| HttpCachingProxy | 兼容的基于请求的客户端中的普通 HTTP 请求 |
| Socks5Proxy | 带其已记录传输能力的 SOCKS5 协商 |
执行普通 HTTP 请求的 QNetworkAccessManager 可以使用面向请求的类型。需要字节隧道的 QTcpSocket 则要求带 TunnelingCapability 的代理。当通用 TCP 套接字必须使用它时,Qt 特别提醒不要在缺少该能力的情况下安装应用默认代理。
在分配端点之前先选择协议类型。对于无需代理认证即可允许的公开 HTTP 请求,HTTP 代理列表提供地址;但 Qt 类型仍必须提供该请求所需的能力。把 CONNECT 服务所用的端口交给 HttpCachingProxy,并不会给这一 Qt 选择补上缺失的能力。
仅缓存的标签同样不保证每个响应都会被远程服务器存储或复用。它描述的是客户端接口所支持的代理使用方式,而缓存复用仍由 HTTP 响应策略决定。