我得到的是 200 状态代码,但我应该得到 302 状态代码,我该如何解决?

问题描述 投票:0回答:1

我编写了一个Java程序来检查网络请求是否会重定向。
由于HTTP协议中有一些状态码,我需要寻找表示重定向请求的302状态码,
这是我的代码旋转网:

URL url = new URL("http://localhost/test/test_page_1.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
var code = connection.getResponseCode();

code
变量应包含302值,因为我的PHP代码通过以下代码设置302重定向代码和位置标头
header("location: pg_2.php")
,但相反,它包含200个表示OK的代码。
我已经使用 Wireshark 检查过,它返回 302。
导致此问题的潜在问题是什么?

java http networking java-http-client
1个回答
1
投票

在您的 Java 代码中,您正在调用

connection.setInstanceFollowRedirects(true);

在拨打

connect()
电话之前。这意味着 Java 客户端……在收到 302 响应时……将执行重定向;即重新发送请求到重定向位置。当您调用
getResponseCode()
getHeaderFields()
时,您看到的是第二个(重定向的)GET 响应的详细信息。

在这种情况下,重定向有效,因此响应代码为 200,并且标头不包含

location
标头。

如果您想查看

302
响应及其标头,请致电
setInstanceFollowRedirects(false)

© www.soinside.com 2019 - 2024. All rights reserved.