portals-portalapps-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Woonsan Ko (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (APA-72) No cookie rewriting
Date Tue, 22 Dec 2015 14:58:46 GMT

    [ https://issues.apache.org/jira/browse/APA-72?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15068207#comment-15068207
] 

Woonsan Ko commented on APA-72:
-------------------------------

Hi [~saschaa1982],

I think your approach is basically right.
The only thing in my mind is that {{HttpClientContextBuilder}} should be regarded as an overriding
mechanism from an extended proxy servlet or filter. IMO, it should allow to set a custom cookie
store in an end project. So, I'd like to suggest the following in {{ExecuteHttpClientCommand}}:
{code}
@Override
protected boolean executeInternal(final ProxyContext context) throws ReverseProxyException,
IOException {
    HttpRequestBase httpRequest = context.getHttpRequest();

    HttpClient httpClient = context.getHttpClient();
    HttpResponse httpResponse = null;

    if (getHttpClientContextBuilder() == null) {
        httpResponse = httpClient.execute(httpRequest);
    } else {
        HttpClientContext httpClientContext = getHttpClientContextBuilder().build();
        // only when a cookie store not provided by a custom httpClientContext..
        if (httpClientContext.getCookieStore() == null) {
            CookieStore cookieStore = context.getCookieStore();
            if (cookieStore != null) {
                httpClientContext.setCookieStore(cookieStore);
            }
        }
        httpResponse = httpClient.execute(httpRequest, httpClientContext);
    }

    context.setHttpResponse(httpResponse);

    return false;
}
{code}

So, for example, a custom servlet or filter may set a different cookie store based on their
specific strategy. Then it would use that custom cookie store in the command.
What do you think?

Regards,

Woonsan

> No cookie rewriting
> -------------------
>
>                 Key: APA-72
>                 URL: https://issues.apache.org/jira/browse/APA-72
>             Project: Portals Apps
>          Issue Type: Bug
>          Components: apa-webcontent
>    Affects Versions: apa-webcontent-2.0
>            Reporter: Sascha Arndt
>            Assignee: Woonsan Ko
>
> I have a problem using this maven dependency:
> {code:xml}
> <dependency>
>   <groupId>org.apache.portals.applications</groupId>
>   <artifactId>apa-webcontent2-reverse-proxy</artifactId>
>   <version>2.0</version>
> </dependency>
> {code}
> Using this version of apa-webcontent2-reverse-proxy none of my cookies got rewrited or
send back to the client. After some debugging session I found out, that the CloseableHttpClient
and the ProxyContext were using different CookieStore objects.
> I "patched" it locally replacing "InitHttpClientCommand"s executeInternal-method like
this:
> {code:title=InitHttpClientCommand.java|borderStyle=solid}
> @Override
> protected boolean executeInternal(final ProxyContext context) throws ReverseProxyException,
IOException {
>   CookieStore cookieStore = new BasicCookieStore();
>   CloseableHttpClient httpClient = httpClientBuilder.setDefaultCookieStore(cookieStore).build();
>   context.setCookieStore(cookieStore);
>   context.setHttpClient(httpClient);
>   return false;
> }
> {code}
> Is this a bug, or am I using it wrong?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message