在 httr 代理配置中选择认证方案
当请求收到 407 时,通过 httr 的 use_proxy 辅助函数提供代理账号,并明确选择 Basic 或 NTLM。
httr 的 use_proxy 辅助函数把代理账号和认证方案放在一起接收。对于更高层的 httr 调用,可以把同一份配置套在选定的表达式周围:
route <- httr::use_proxy(
'proxy.example',
port = 8080,
username = Sys.getenv('PROXY_USER'),
password = Sys.getenv('PROXY_PASSWORD'),
auth = 'ntlm'
)
response <- httr::GET('https://api.example/items', route)
只有当代理提供该方案、且已安装的 libcurl 构建支持它时才使用 ntlm。如果交换仍然失败,curl 的 NTLM 代理诊断会解释质询、构建支持和连接连续性检查。对于期望 Basic 的代理,请选择 auth = 'basic'。Basic 是 use_proxy 的默认值;只提供 Windows 风格的用户名并不会选中 NTLM。
该辅助函数把这些值映射到 libcurl 的 proxyuserpwd、proxyport 和 proxyauth 选项。port 参数必须是数字。
407 关系到代理的登录。通过 httr::authenticate 或应用的 Authorization 头提供给 API 的账号,接收方不同。
把真实的代理端点和对方声明的质询与错误报告放在一起,但排除机密信息。账号错误、方案错误和认证方法不受支持需要不同的修复;改变证书验证并不能在其中做出选择。