You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring WebClient发起GET请求返回“Moved Permanently”重定向错误如何解决

WebClient请求VPN内网地址返回301跳转问题排查方案
  • 排查JVM代理配置
    WebClient默认会读取JVM的系统代理参数,若JVM配置了公网代理,请求会走公网链路,表现和关闭VPN的场景完全一致。可在启动程序时添加如下VM参数清空代理配置测试:
-Dhttp.proxyHost= -Dhttp.proxyPort= -Dhttps.proxyHost= -Dhttps.proxyPort=

可在代码中添加日志确认当前代理配置:

System.out.println("HTTP代理地址:" + System.getProperty("http.proxyHost"));
System.out.println("HTTPS代理地址:" + System.getProperty("https.proxyHost"));

另外需检查IDE的启动配置是否默认注入了代理参数。

  • 排查本地域名解析配置
    比对你和同事的hosts文件,以及ping目标域名返回的IP是否一致,若本地hosts错误将域名解析到公网IP,也会触发301跳转。

  • 补全请求头模拟浏览器行为
    部分内网服务会校验User-Agent、Accept等请求头,可将WebClient的请求头配置为和浏览器一致测试:

WebClient webClient = WebClient.builder().build();

Mono<String> stringMono = webClient.get()
    .uri(urlWhichAvailableOnlyUnderVPN)
    // 替换为你本地浏览器的实际User-Agent值
    .header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
    .header("Accept", "application/xml, text/xml, */*")
    .retrieve()
    .bodyToMono(String.class);

stringMono.subscribe(response -> System.out.println("RESPONSE: " + response));
  • (可选)配置自动跟随重定向
    若确认需要跟随跳转,可显式配置HttpClient开启重定向跟随:
WebClient webClient = WebClient.builder()
    .clientConnector(new ReactorClientHttpConnector(
        HttpClient.create().followRedirect(true)
    ))
    .build();

内容的提问来源于stack exchange,提问作者Aslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:45:02