我的应用程序使用boost :: asio连接到Internet到HTTP服务。最近我们添加了对HTTP Proxys和基本用户身份验证的支持。我们通过在每个HTTP调用中发送Authentication参数来实现基本用户身份验证,如果用户在我们的程序中配置了代理。参数按照here:
所述发送Authorization: Basic <base64 Encoded username:password>
这至少适用于一个用户及其代理服务器。其他用户报告他们的代理服务器回复
需要407代理身份验证
我的猜测是,一些代理服务器接受1个单阶段身份验证,而其他代理服务器则不接受。我没有找到任何请求2阶段通信的信息,其中通过返回407拒绝第一次呼叫的访问,并且只接受第二次呼叫。
如果已返回407,我们的程序仍未重试该呼叫。我们必须加上这个吗?
答案 0 :(得分:2)
不,基本身份验证不需要多个请求。
即使你没有授权,你首先要做的请求。
如果一个代理服务器不接受请求/使用/基本身份验证头,那么可能它配置了另一个身份验证方案(摘要身份验证很常见,可以说更好)。
您应该检查完整的错误消息和/或联系服务器管理员以获取更多信息。或者,您可以使用Fiddler或Wireshark等工具来检查来自例如Fiddler或Wireshark的流量。您知道的浏览器在连接到同一代理服务器时没有问题。