Hi, I’ve come across a scenario where the location: http://www.nwsource.com/travel/scr/tf_destination.cfm? When requested in IE browser comes back with the following response code: GET http://www.nwsource.com/travel/scr/tf_destination.cfm? 302 Moved Temporarily to '' When the successive requests were studied, IE browser seems to make requests as follows:
Request Response code Location GET http://www.nwsource.com/travel/scr/tf_destination.cfm? 302 Moved Temporarily to '' GET http://www.nwsource.com/travel/scr/ 302 Moved Temporarily to /travel/ GET http://www.nwsource.com/travel/ 301 Moved Permanently to http://www.nwsource.com/travel So finally the browser renders the page: http://www.nwsource.com/travel However with httpclient, when the first request is made, the response header comes back with blank value for location. GET http://www.nwsource.com/travel/scr/tf_destination.cfm? 302 Moved Temporarily to '' Whenever there is a redirection to a relative url, the url is absolutized and fetched. In our case however, the redirected url happens to be a blank string and hence when absolutizing, the original url is returned. And hence, goes into infinite redirection. if (redirectUri.isRelativeURI()) { if (this.params.isParameterTrue(HttpClientParams.REJECT_RELATIVE_REDIRECT)) { LOG.warn("Relative redirect location '" + location + "' not allowed"); return false; } else { //location is incomplete, use current values for defaults LOG.debug("Redirect URI is not absolute - parsing as relative"); redirectUri = new URI(currentUri, redirectUri); } The control comes to the else part of this snippet in org.apache.commons.httpclient.HttpMethodDirector class and we are getting the following output: Narrowly avoided an infinite loop in execute caught org.apache.commons.httpclient.RedirectException: Maximum redirects (100) exceeded Has anyone come across a similar situation where the redirect location is blank. If so is it possible to emulate browser behaviour without a code change in httpclient? Thanks in advance, Subashini
