通过传递优化使用代理
当传递优化从 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 连接缓存。