Как пройти аутентификацию на прокси-сервере из clj-apache-http? - PullRequest
2 голосов
/ 30 марта 2010

Я пытаюсь запустить, используя http://github.com/rnewman/clj-apache-http

(http/get (java.net.URI. url)
        :headers {"User-Agent" user-agent}
        :parameters (http/map->params
                 {:default-proxy (http/http-host :host "localhost"
                                 :port 8888)})
        :as :string)

Проблема в том, что мой прокси (squid) требует аутентификации. Как мне «подать» свое имя пользователя / пароль в эту библиотеку?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 31 марта 2010

Добавление следующего в мой словарь заголовков дало результат:

"Proxy-Authorization" (str "Basic "
                             (base64/encode-str "username:password"))

Как сказал Mac - это также можно реализовать с помощью фильтра - но preemptive-basic-auth-filter не будет работатьпотому что он отправляет заголовки для WWW-авторизации вместо прокси-авторизации.

0 голосов
/ 30 марта 2010

clj-apache-http имеет preemptive-basic-auth-filter, который вы можете использовать. Он поддерживает объединенные строки имени пользователя и пароля в форме «имя: пароль». Использование функции плохо документировано, но можно найти здесь . Пример (не тестировался):

(http/get (java.net.URI. url)
    :headers {"User-Agent" user-agent}
    :parameters (http/map->params
             {:default-proxy (http/http-host :host "localhost"
                             :port 8888)})
    :as :string
    :filters ((preemptive-basic-auth-filter "name:password")))
...