NobodyIsMe
V2EX  ›  问与答

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

  •  
  •   NobodyIsMe · Apr 28, 2020 · 1881 views
    This topic created in 2290 days ago, the information mentioned may be changed or developed.
    基本环境:

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

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

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

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

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

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

    大家的项目,对外 API 请求的流量,也是默认走系统代理的吗?
    3 replies    2022-07-12 12:36:40 +08:00
    NobodyIsMe
        1
    NobodyIsMe  
    OP
       Apr 28, 2020
    项目是在 IDEA 内运行的, 尝试打成 jar 包,直接运行 jar 包跑起项目,对外的流量依旧是走了系统代理
    MarkP
        2
    MarkP  
       Jul 11, 2022   ❤️ 1
    今天我也发现了这个问题,并找到了答案。
    https://stackoverflow.com/questions/36847075/how-does-jvm-automatic-setting-of-os-xs-system-proxies-work

    可以这么概括:JDK 初始化时会调用 setProxyProperties 方法,来读取 OSX 的系统代理设置,一旦找到,会将其设置到 Java properties 中。
    NobodyIsMe
        3
    NobodyIsMe  
    OP
       Jul 12, 2022
    @MarkP 老哥强! 点赞!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5695 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:35 · PVG 14:35 · LAX 23:35 · JFK 02:35
    ♥ Do have faith in what you're doing.