1

As you can see the Apache httpclient 3.x had an amazing method that you could use to reduce the amount of unnecessary connections and data that is send around between client and server:

client.getParams().setAuthenticationPreemptive(true);

http://hc.apache.org/httpclient-3.x/authentication.html#Preemptive_Authentication

What I want to know is, why did they remove it?
I know there are proper workarounds like using an interceptor or modifying the header, but I am wondering about the reasons behind that change: stability, performance, security, conformity? ...

4

1 回答 1

2

抢先式身份验证作为一个简单的布尔标志是一个很好的例子,说明如何在没有长期考虑的情况下将功能添加到 HC 3.x,直到 3.x 代码线变得完全无法管理。

防止意外敏感信息泄露是改变 HC 4.x 中抢先式身份验证工作方式的主要原因。HC 3.x 让人们可以非常容易地以明文形式向随机站点提交他们的凭据,甚至没有意识到这一点。

从 4.1 开始,HttpClient 默认采用更明智的策略:身份验证凭据在显式身份验证质询和成功身份验证后缓存在执行上下文中。同一会话中的所有后续请求都使用缓存的身份验证材料进行抢先式身份验证。如有必要,仍然可以通过预先填充身份验证缓存来强制对初始请求进行抢先身份验证。但至少这要求用户为特定的身份验证目标明确提供身份验证材料。

于 2013-11-28T10:23:02.737 回答