По какой причине предварительная аутентификация была удалена из Apache httpClient?
Как вы можете видеть, в Apache httpclient 3.x был удивительный метод, который можно использовать для уменьшения количества ненужных соединений и данных, передаваемых между клиентом и сервером:
client.getParams () setAuthenticationPreemptive(истина).
http://hc.apache.org/httpclient-3.x/authentication.html
То, что я хочу знать, - почему они удалили это?
Я знаю, что есть подходящие обходные пути, такие как использование перехватчика или изменение заголовка, но мне интересно узнать причины этого изменения: стабильность, производительность, безопасность, соответствие?...
1 ответ
Упреждающая аутентификация как простой логический флаг - хороший пример того, как функции добавлялись в HC 3.x без долгосрочных размышлений, пока кодовая строка 3.x не превратилась в совершенно неуправляемый беспорядок.
Предотвращение случайного раскрытия конфиденциальной информации стало основной причиной изменения способа превентивной аутентификации в HC 4.x. Благодаря HC 3.x люди могли с легкостью отправлять свои учетные данные на случайные сайты в открытом тексте, даже не осознавая этого.
Начиная с 4.1 HttpClient по умолчанию использует более разумную стратегию: учетные данные для аутентификации кэшируются в контексте выполнения после явной аутентификации и успешной аутентификации. Все последующие запросы в том же сеансе аутентифицируются преимущественно с использованием кэшированного материала аутентификации. Можно по-прежнему принудительно устанавливать приоритетную аутентификацию исходного запроса, предварительно заполнив кэш аутентификации, если это необходимо. Но, по крайней мере, это требует, чтобы пользователь явно предоставил аутентификационный материал для конкретной цели аутентификации.