Elixir Tesla:使用 Mint 适配器进行代理认证
把 Basic 认证头放到 Mint 适配器的连接选项中,使其能在目标请求之前随 CONNECT 发出。
basic = "Basic " <> Base.encode64(proxy_user <> ":" <> proxy_password)
client = Tesla.client([], {Tesla.Adapter.Mint, [
proxy: {:http, "proxy.example", 8080, []},
proxy_headers: [{"proxy-authorization", basic}]
]})用这个 Tesla 客户端执行应用所需的操作。操作中的 URL 仍然指向服务端点;proxy_user 和 proxy_password 则是中间代理的账号信息。
对于隧道代理,Mint 把 proxy_headers 用于 CONNECT;在转发模式下,则将这些头合入请求。通用的 Tesla 目标请求头中间件,并不等于这个更早阶段的连接输入。
示例使用 Basic。Base64 是一种表示形式,不是加密;保护程度取决于连接代理时使用的传输方式。
这些选项属于 Mint 适配器。换成 Finch、Hackney 或其他适配器时,要按各自的接口配置;目标服务的 Authorization 仍然属于另一场认证交互。