我在localhost:2080上运行代理以进行调试。我可以使用以下任一方式查看通过我的代理的流量:
curl http://localhost:8888/stuff --proxy localhost:2080
curl http://some.server.com:8888/stuff --proxy localhost:2080
使用Spring应用程序或简单的HttpURLConnectionExample Java application,我看到请求在我调用some.server.com
时通过代理,但从未在localhost
上,即使我设置{{1}随机值(以避免默认值为http.nonProxyHosts
)。
我通过添加以下代码确保我的JVM参数被记入帐户:
localhost
产生以下输出:
System.out.println("java.version="+props.getProperty("java.version"));
System.out.println("http.proxyHost="+props.getProperty("http.proxyHost"));
System.out.println("http.proxyPort="+props.getProperty("http.proxyPort"));
System.out.println("http.nonProxyHosts="+props.getProperty("http.nonProxyHosts"));
为什么在使用以下JVM参数运行时,java.version=1.8.0_131
http.proxyHost=localhost
http.proxyPort=2080
http.nonProxyHosts=dummy.snafu.com
https.proxyHost=localhost
https.proxyPort=2080
https.nonProxyHost=dummy.snafu.com
Testing 1 - Send Http GET request
Sending 'GET' request to URL : http://localhost:8888/stuff
Response Code : 200
hello
的HTTP请求不通过我的代理?
localhost
-Dhttp.proxyHost=localhost
-Dhttp.proxyPort=2080
答案 0 :(得分:2)
这是DefaultProxySelector的限制,它总是将本地Uris(localhost,127。*等)附加到你配置为nonProxyHosts的任何内容,基本上绕过所有本地Uris的代理(localhost | 127。* | [:: 1] | 0.0.0.0 | [:: 0])。幸运的是,有一种解决方法是创建自己的代理选择器并将其注册为默认值。