我的应用程序使用boost :: asio连接到Internet到HTTP服务。 最近我们增加了对HTTP Proxys和基本用户authentication的支持。 如果用户在我们的程序中configuration了一个代理,我们通过每次HTTP调用发送authentication参数来实现基本用户authentication。 参数如下所述发送:
Authorization: Basic <base64 Encoded username:password>
这至less适用于一个用户和他的代理服务器。 其他用户报告他们的代理服务器回复
需要407代理validation
我的猜测是,一些代理服务器接受一个阶段的authentication,而其他人不。 我没有发现有任何信息要求进行2阶段的通信,其中通过返回407始终拒绝第一个呼叫的访问,并且只接受第二个呼叫。
如果已经返回了407,我们的程序仍然不会重试。 我们必须添加这个吗?
我在stackoverflow之前问过这个问题,但没有得到足够的答案。
正如在RFC 2617 (您应该已经阅读过)中所明确指出的,对代理进行身份validation需要您发送Proxy-Authorization标头,而不是用于向原始服务器进行身份validation的Authorization标头。 这听起来像你find的一个“工作”代理服务器实际上是“越野车”。