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

Java程序未捕获302重定向状态码,返回200 OK的问题排查

问题原因及解决方案
  • 核心原因:HttpURLConnection默认开启自动跟随重定向功能。当服务器返回302状态码时,它会自动向Location头指定的URL发起新请求,最终你获取到的是跳转后目标页面的200状态码,而非初始的302。这也是为什么Wireshark能抓到302,但Java代码拿到的是200——抓包捕获的是第一次请求的响应,而代码已经自动完成了跳转。

  • 验证方式:调用connection.getURL()查看最终请求的地址,会发现已经变成了pg_2.php对应的URL,以此确认自动跳转已发生。

  • 解决办法:在调用connect()前禁用自动重定向:

    URL url = new URL("http://localhost/test/test_page_1.php");
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    // 禁用实例级自动重定向
    connection.setInstanceFollowRedirects(false);
    connection.connect();
    var code = connection.getResponseCode(); // 此时将返回302
    

    若需要全局禁用所有HttpURLConnection的自动重定向,可调用静态方法:

    HttpURLConnection.setFollowRedirects(false);
    

    注意实例级设置的优先级高于全局设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:45:37