没有可用 Proxy-Authenticate 质询的 HTTP 407
当客户端从不调用其凭据处理程序,或收到意外状态而非正常质询时,检查代理的认证响应头。
客户端无法仅凭一个状态码选择认证机制。代理的响应需要说明它接受什么。
HTTP 要求产生 407 的代理发送 Proxy-Authenticate 质询。对于 Basic 服务,一个简单示例是:
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Office proxy"
数字状态码、响应头名称以及方案特有的语法都很重要。正文中带有 authentication 一词的品牌化错误页面并不能取代响应头。自定义实现还必须发送完整的 HTTP 407 响应,包括响应头终止符和正文分帧。
检查到达此客户端的响应
在移除秘密值后记录状态与质询字段。中间设备可能改写了响应,或者自定义代理构造了无效质询。把这些证据与代理自身的交互日志进行比对。
如果服务改为发送 405 或其他错误,不要在自定义客户端中把每个这样的响应当作 407 重新标记。那样会掩盖真正的方法策略失败,而且仍然得不到可靠的方案协商。请修复服务行为,或使用其有文档支持且受支持的认证路径。
多个质询还需要真正的 HTTP 解析器。逗号可能分隔参数或质询;盲目地按逗号拆分整个响应头可能破坏引号内的 realm。请使用客户端所支持的认证实现,而不是一连串字符串替换。
只有在质询可用之后,调查凭据提供程序为何没有返回账户才有意义。