代理选择(与客户端无关)。移植自 Keelson jvm/modules/clj-net/src/im/ttalk/net/proxy.clj(5c745869),逻辑未改。
一个「代理」是下面三样之一,select 都收:
(from-environment) / (from-env m):环境变量那一档(同 C# HttpClient.DefaultProxy、curl):
http_proxy / HTTP_PROXY(CGI 环境下不读大写的,防 httpoxy)、https_proxy / HTTPS_PROXY、all_proxy / ALL_PROXY 兜底;
no_proxy / NO_PROXY:逗号分隔,* = 全部绕过,.a.com / a.com 都匹配 a.com 本身与子域。一个都没设 ⇒ nil。(web-proxy "http://h:p" {:bypass [正则…] :bypass-on-local? b}):固定 HTTP 代理 + 绕过表:绕过表的正则
对主机名、scheme://host、scheme://host:port 任一整串匹配(大小写不敏感)即绕过;bypass-on-local? ⇒ 不带点的主机名与回环也绕过。->proxy-selector 把前两种变成 ProxySelector。平常不直接用本 ns:(im.ttalk.http/client {:proxy :env}) 即可。代理选择(与客户端无关)。移植自 Keelson `jvm/modules/clj-net/src/im/ttalk/net/proxy.clj`(5c745869),逻辑未改。
一个「代理」是下面三样之一,`select` 都收:
- `(from-environment)` / `(from-env m)`:环境变量那一档(同 C# HttpClient.DefaultProxy、curl):
http_proxy / HTTP_PROXY(CGI 环境下不读大写的,防 httpoxy)、https_proxy / HTTPS_PROXY、all_proxy / ALL_PROXY 兜底;
no_proxy / NO_PROXY:逗号分隔,* = 全部绕过,.a.com / a.com 都匹配 a.com 本身与子域。一个都没设 ⇒ nil。
- `(web-proxy "http://h:p" {:bypass [正则…] :bypass-on-local? b})`:固定 HTTP 代理 + 绕过表:绕过表的正则
对主机名、scheme://host、scheme://host:port 任一整串匹配(大小写不敏感)即绕过;bypass-on-local? ⇒ 不带点的主机名与回环也绕过。
- 任何 java.net.ProxySelector。
`->proxy-selector` 把前两种变成 ProxySelector。平常不直接用本 ns:`(im.ttalk.http/client {:proxy :env})` 即可。(->proxy-selector p)map 代理 ⇒ java.net.ProxySelector(已经是 ⇒ 原样;nil ⇒ nil)。
map 代理 ⇒ java.net.ProxySelector(已经是 ⇒ 原样;nil ⇒ nil)。
(bypassed? p target)目标绕过这个代理?(只对 from-env / web-proxy 的 map 有意义)
目标绕过这个代理?(只对 from-env / web-proxy 的 map 有意义)
(from-env env)读给定的环境表(string ⇒ string);没有任何代理变量 ⇒ nil。
读给定的环境表(string ⇒ string);没有任何代理变量 ⇒ nil。
(from-environment)读进程环境(≙ C# HttpClient.DefaultProxy);没有任何代理变量 ⇒ nil。
读进程环境(≙ C# HttpClient.DefaultProxy);没有任何代理变量 ⇒ nil。
(loopback-host? host)keel %loopback-host?:localhost、::1、[::1]、127. 开头的点分地址(只看字面,⛔ 不解析)。
keel %loopback-host?:localhost、::1、[::1]、127. 开头的点分地址(只看字面,⛔ 不解析)。
(select p uri)目标 uri 该走的代理:java.net.Proxy 表(直连 = [Proxy/NO_PROXY])。p 是 map 或 ProxySelector。
目标 `uri` 该走的代理:java.net.Proxy 表(直连 = [Proxy/NO_PROXY])。`p` 是 map 或 ProxySelector。
(web-proxy address)(web-proxy address {:keys [bypass bypass-on-local?]})固定的 HTTP 代理(address:URI 或串,如 http://127.0.0.1:9)。:bypass:正则串表;:bypass-on-local?。
固定的 HTTP 代理(`address`:URI 或串,如 http://127.0.0.1:9)。`:bypass`:正则串表;`:bypass-on-local?`。
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |