[ 
https://issues.apache.org/jira/browse/HTTPCORE-337?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski resolved HTTPCORE-337.
----------------------------------------

       Resolution: Won't Fix
    Fix Version/s:     (was: 4.3)
    
> Example Fix: NIO Reverse Proxy Server Example
> ---------------------------------------------
>
>                 Key: HTTPCORE-337
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-337
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: Examples
>    Affects Versions: 4.2.4
>            Reporter: Mike Corneille
>            Priority: Minor
>
> Problem: The 302 redirect doesn't work because the "location" header isn't 
> properly transposed. By copying all headers from the origin to the client 
> respolves the 302 problem.  There could be other issues with simply 
> transposing all headers, but this is a good fix to add for now...
> Examples found on page:
> http://hc.apache.org/httpcomponents-core-ga/examples.html
> http://hc.apache.org/httpcomponents-core-ga/httpcore-nio/examples/org/apache/http/examples/nio/NHttpReverseProxy.java
> +import org.apache.http.Header;
>  import org.apache.http.HttpResponse;
>  import org.apache.http.message.BasicHttpResponse;
>  import org.apache.http.nio.ContentEncoder;
> @@ -46,6 +47,11 @@ class ProxyResponseProducer implements 
> HttpAsyncResponseProducer
>              // Rewrite response!!!!
>              BasicHttpResponse r = new 
> BasicHttpResponse(response.getStatusLine());
>  
> +            Header[] headers = response.getAllHeaders();
> +            for (Header header: headers)
> +            {
> +                if 
> (!header.getName().toLowerCase().equals("transfer-encoding") && 
> !header.getName().toLowerCase().equals("content-length")
> +                    && !header.getName().toLowerCase().equals("connection"))
> +                {
> +                    r.addHeader(header);
> +                }
> +            }
>              r.setEntity(response.getEntity());
>              return r;
>          }
> @@ -118,4 +137,4 @@ class ProxyRequestProducer implements 
> HttpAsyncRequestProducer
> +                    if (!header.getName().toLowerCase().equals("host") && 
> !header.getName().toLowerCase().equals("content-length"))
> +                    {
> +                        r.addHeader(header);
> +                    }
> +                }
> +
>                  r.setEntity(((HttpEntityEnclosingRequest) 
> request).getEntity());
>                  return r;
>              }
>              else
>              {
> -                return new BasicHttpRequest(request.getRequestLine());
> +                BasicHttpRequest r = new 
> BasicHttpRequest(request.getRequestLine());
> +                Header[] headers = request.getAllHeaders();
> +                for (Header header: headers)
> +                {
> +                    if (!header.getName().toLowerCase().equals("host") && 
> !header.getName().toLowerCase().equals("content-length"))
> +                    {
> +                        r.addHeader(header);
> +                    }
> +                }
> +
> +                return r;
>              }
>          }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to