【发布时间】:2016-03-06 03:23:17
【问题描述】:
这是我的场景
我正在调用来自 HOSTA 的 url http://www.hosta.com/something
这会将我重定向到 HOSTB 网址 http://www.hostb.com/something
这是我从 url a 获得的响应代码
http-outgoing-5
http-outgoing-5
重定向到 www.hostb.com/something
http-outgoing-10 >> 主机:hosta.com
在最后一行中,我看到主机标头设置为 HOSTA,这是错误的。
这是我正在使用的代码
这就是创建连接的方式
private PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
HttpClientBuilder builder= HttpClients.custom();
builder.setMaxConnPerRoute(50)
.setConnectionManager(cm)
.setConnectionTimeToLive(timeout, TimeUnit.MILLISECONDS)
.setDefaultCookieStore(cookieStore)
.setRedirectStrategy(new LaxRedirectStrategy())
.setDefaultSocketConfig(socketConfig)
.setServiceUnavailableRetryStrategy(retryStrategy)
.setKeepAliveStrategy(keepAliveStrategy)
.setRetryHandler(myRetryHandler);
调用请求的方法
HttpPost post = new HttpPost(url);
post.setHeader("User-Agent", USER_AGENT);
post.setHeader("Cache-Control", "max-age=0");
post.setHeader("Connection", "keep-alive");
post.setHeader("Content-Type", "application/x-www-form-urlencoded");
post.setHeader("Upgrade-Insecure-Requests", "1");
post.setConfig(requestConfig);
if (origin != null) {
post.setHeader("Origin", origin);
}
if (host != null) {
post.setHeader("Host", host);
}
if (referer != null) {
post.setHeader("Referer", referer);
}
//some more code
我正在使用运行良好的自动重定向(使用 LaxDirectStrategy)。但在这种特殊情况下,我遇到了问题。
在跨主机重定向的情况下,是否有任何方法可以更新 HOST 标头,或者可以为一个特定请求停止自动重定向?
【问题讨论】:
-
这里成功了吗?甚至我也面临着与梅西网址相同的情况
-
@SandeepDas 检查这个答案:stackoverflow.com/a/64557806/363573
标签: apache-httpclient-4.x http-redirect