在系统 HTTP 代理的历史情形中,OkHttp 在 3.5.0 中改变了行为:该代理失败后,它不再尝试直接连接。较早关于静默回退的报告可能描述的是这一变更之前的行为。

那段历史并不能裁定每个应用的路由策略。要解读你自己应用中的报告,请遵循以下三项检查:

  1. 查明解析到的 OkHttp 版本。 使用应用的依赖信息,包括框架实际打包的版本,而不是所复制示例的年代。
  2. 查明此客户端如何选择路由。 显式代理与自定义 ProxySelector 是不同的配置。如果选择器在代理之后提供了直连候选,那就是在提供直连替代方案。
  3. 跟踪失败处理程序。 查找用另一个客户端重试的应用代码。该替代实现发出的直接请求不属于第一个客户端的决策范围。

对于强制代理要求,相关客户端策略必须停止,而不是提供直连替代方案。请对照该要求检查实际的客户端与重试路径;仅凭 3.5.0 的变更并不构成整机范围的流量规则。

相关文章