通过传递优化使用代理

当传递优化从 HTTP 源下载内容时,它将使用 WinHttp 的自动代理发现功能来简化和最大化对复杂代理配置的支持,因为它从内容服务器发出范围请求。 它通过在所有 HTTP 调用中设置 WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY 标志来执行此操作。

传递优化为 WinHttp 提供一个令牌,该令牌对应于当前登录的用户。 反过来,WinHttp 会自动根据 Internet Explorer 或 Windows 中的代理 设置 菜单中的代理服务器集对用户进行身份验证。

对于使用传递优化成功使用代理的下载,应通过 Windows 代理设置 或 Internet Explorer 代理设置来设置代理。

将 Internet Explorer 代理设置为应用设备范围可确保即使没有用户登录,设备也能访问代理服务器。 在这种情况下,如果需要代理身份验证,则会使用“NetworkService”上下文访问代理。

注意

建议不要使用 netsh winhttp set proxy ProxyServerName:PortNumber。 使用此方法不提供代理的自动检测,不支持显式 PAC URL,也不提供对代理的身份验证。 如果使用交互式用户令牌) ,WinHTTP 将忽略使用自动发现 (请求的此设置。

如果用户已登录,系统将使用 Internet Explorer 代理。

如果没有用户登录,即使同时设置了 Internet Explorer 代理和 netsh 配置,netsh 配置也将优先于 Internet Explorer 代理。 这可能会导致下载失败。 例如,你可能会收到HTTP_E_STATUS_PROXY_AUTH_REQ或HTTP_E_STATUS_DENIED错误。

如果代理配置是静态 proxyServerName:Port,仍可以使用 netsh 从 Internet Explorer (netsh winhttp import proxy source=ie 导入代理设置) 。 但是,前面提到的相同限制也适用。

设置行为摘要

这些表汇总了各种设置组合的行为:

在交互式用户登录时:

使用 来设置命名代理: 传递优化已成功使用代理
Internet Explorer 代理,当前用户
Internet Explorer 代理,设备范围
netsh 代理
Internet Explorer 代理 (当前用户) netsh 代理 是,使用了 Internet Explorer 代理
Internet Explorer 代理 (设备范围的) netsh 代理 是,使用了 Internet Explorer 代理

如果无法从已登录用户) 获取用户令牌,则使用 NetworkService (:

使用 来设置命名代理: 传递优化已成功使用代理
Internet Explorer 代理,当前用户
Internet Explorer 代理,设备范围
netsh 代理
Internet Explorer 代理 (当前用户) netsh 代理 是,使用了 netsh 代理
Internet Explorer 代理 (设备范围的) netsh 代理 是,使用了 netsh 代理

设置设备范围的 Internet Explorer 代理

可以使用网络代理 CSP 设置将应用于所有用户(包括交互式用户、LocalSystem 和 NetworkService)的设备 范围代理

或者,如果使用 组策略,可以通过启用计算机配置\ 管理模板\ Windows 组件\ Internet Explorer\ 使代理设置按计算机 (而不是按用户) 策略,将代理设置应用于同一设备的所有用户。

此策略旨在确保代理设置统一应用于同一台计算机,并且不会因用户而异,因此,如果启用此策略,则用户无法设置特定于用户的代理设置。 他们必须使用为计算机的所有用户创建的区域。 如果禁用或未配置此策略,则同一计算机的用户可以建立自己的代理设置。

将代理与 Microsoft 连接缓存配合使用

从 Windows 10 版本 2004 开始,可以在代理后面使用连接的缓存。 在旧版本中,将传递优化设置为从连接缓存下载时,它将绕过代理并尝试直接连接到连接的缓存服务器。 这可能会导致下载失败。

但是,可以将连接的缓存服务器设置为使用未经身份验证的代理。 有关详细信息,请参阅 Configuration Manager 中的 Microsoft 连接缓存