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

Kevin Risden commented on KNOX-1559:
------------------------------------

Talked with [~rlevas] offline - the DefaultDispatch does the right thing when 
it comes to headers. The big question is the need for removeUrlEncoding for 
Ambari. 

[https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/index.md#query-predicates]

One of the issues is that Ambari doesn't seem to require url encoding of query 
predicates (there may be other places but this is the first I found). Knox 
works around that here:

[https://github.com/apache/knox/blob/master/gateway-spi/src/main/java/org/apache/knox/gateway/dispatch/AbstractGatewayDispatch.java#L149]

PassAllHeadersNoUrlEncoding makes use of that to make sure Ambari works. There 
are cases where we want to use the header handling of DefaultDispatch but the 
url encoding handling. 

> Create Dispatch implementation that is configurable via service.xml file
> ------------------------------------------------------------------------
>
>                 Key: KNOX-1559
>                 URL: https://issues.apache.org/jira/browse/KNOX-1559
>             Project: Apache Knox
>          Issue Type: Improvement
>            Reporter: Robert Levas
>            Assignee: Kevin Risden
>            Priority: Major
>              Labels: ambari
>             Fix For: 1.3.0
>
>         Attachments: KNOX-1559.patch, KNOX-1559.patch
>
>
> Create a {{org.apache.knox.gateway.dispatch.Dispatch}} implementation that is 
> configurable via metadata file (for example, {{service.xml}}).   Configurable 
> parameters should be 
> * headers to exclude when forwarding requests
> * whether parameters should URL-encoded or not
> Such an implementation should be able to make at least the following Dispatch 
> implementations obsolete:
> * org.apache.knox.gateway.dispatch.PassAllHeadersNoEncodingDispatch
> * org.apache.knox.gateway.dispatch.PassAllHeadersDispatch
> A possible declaration could be:
> {code}
>     <dispatch 
> classname="org.apache.knox.gateway.dispatch.ConfigurableDispatch">
>        <property>
>            <name>excludeHeaders<name>
>            <value>Authorization, Content-Length</value>
>        </property>
>        <property>
>            <name>removeUrlEncoding<name>
>            <value>false</value>
>        </property>
>     </dispatch>
> {code}
> Or maybe
> {code}
>     <dispatch 
> classname="org.apache.knox.gateway.dispatch.ConfigurableDispatch" 
> removeUrlEncoding="true" excludeHeaders="Authorization, Content-Length" />
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to