在 URLSession 中使用系统代理设置或会话级覆盖
让 URLSession 默认使用系统代理设置,并把有意的覆盖限定在已配置的会话内。
使用 URLSession 的 macOS 应用通常可以遵循本机的代理策略,而不必再让用户重新输入同一个代理。Apple 的文档说明,connectionProxyDictionary 的默认值会使用系统设置。
下载管理器完全可以提供自己的代理偏好。请把选择讲清楚:“使用系统设置”和有意配置的会话是两种不同的模式。复制一个当前的代理地址,等于给这条路由拍了一张快照。
在创建会话之前应用自定义策略。URLSession 会复制传入的配置;之后再修改原来的配置对象不会更新已存在的会话。当用户更改应用的代理偏好时,请为新的策略安排一个新会话,并决定已经在进行中的请求应当如何完成或被取消。
对于受支持的部署目标,Apple 现在推荐使用 proxyConfigurations 而不是更旧的字典接口,因为它支持安全的代理与中继类型。在选择该接口之前,请对照应用的最低操作系统版本检查 API 的可用性。
这一行为属于 URLSession。自行打开套接字或使用其他 HTTP 实现的软件包需要有自己的代理支持。在更改系统偏好之前,先确认它用的是哪种传输方式。