如何从clj-apache-http对代理服务器进行身份验证?

时间:2010-03-29 23:31:37

标签: proxy clojure apache-commons

我正在尝试使用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 个答案:

答案 0 :(得分:2)

将以下内容添加到我的标题词典中可以解决问题:

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

就像Mac所说的那样 - 这也可以通过过滤器来实现 - 但是preemptive-basic-auth-filter不会起作用,因为它会发送WWW-Authorization的头而不是代理授权。

答案 1 :(得分:0)

clj-apache-http有一个preemptive-basic-auth-filter,你可以使用它。它支持此形式“name:password”的组合用户名/密码字符串。该功能的使用没有详细记录,但可以找到here。示例(未测试):

(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")))