SpringBoot 项目对外的请求全部走了系统网络代理

2020-04-28 22:06:03 +08:00
 LinJunzhu
基本环境:

1. MacOS
2. SpringBoot 2
3. 使用了 Clash,并且设为了系统代理 (通过 Wifi -> 代理设置 可以看到)

今天惊讶的发现,在项目内对外请求 API 、JDBC 的数据库连接,流量全都走了 Clash (看的日志),按道理不应该会去读取系统的代理设置。

发现:System 常量内有 http.proxyHost 和 http.proxyPort 属性, 通过搜索,得知可以直接设置这两个值,从而使项目对外的流量可以直接走代理。

而我再次确认,这两个属性,我并没有设置为环境变量。

搜索了好一阵子,也没有相关答案。

找到了相关的一个答案,将 java.net.useSystemProxies 设置为 false,可以不走系统代理,然而看文档该值默认就是为 false 的, 而我从 System 变量没有找到该属性,尝试启动项目时设置该属性,依旧是 走了系统代理

大家的项目,对外 API 请求的流量,也是默认走系统代理的吗?
1125 次点击
所在节点    问与答
3 条回复
LinJunzhu
2020-04-28 22:07:55 +08:00
项目是在 IDEA 内运行的, 尝试打成 jar 包,直接运行 jar 包跑起项目,对外的流量依旧是走了系统代理
MarkP
2022-07-11 18:31:16 +08:00
今天我也发现了这个问题,并找到了答案。
https://stackoverflow.com/questions/36847075/how-does-jvm-automatic-setting-of-os-xs-system-proxies-work

可以这么概括:JDK 初始化时会调用 setProxyProperties 方法,来读取 OSX 的系统代理设置,一旦找到,会将其设置到 Java properties 中。
LinJunzhu
2022-07-12 12:36:40 +08:00
@MarkP 老哥强! 点赞!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/667093

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX