这里是我的方案的Apache的HttpClient 4.5跨主机重定向
我打电话从HOSTA http://www.hosta.com/something
这是重定向我到HOSTB网址 http://www.hostb.com/something
一个URL这是响应代码,我从网址获取a
http-outgoing-5 < < HTTP/1.1 302暂时移动
HTTP出射-5- < <位置:www.hostb.com/something
重定向到www.hostb.com/something
HTTP出射-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头,或者是否可以针对某个特定请求停止自动重定向?