Hi Sandeep,
The response from the UI for everything looks good, except for the
information rendered from those graphs.
The requests to generate those graphs, from what I see on the errors, are
GET petitions to that API I mentioned before that get back a JSON. Those
petitions have the following information:

GET /production/datapoints HTTP/1.1
Host: knox:12002
Connection: keep-alive
Accept: */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
Referer: http://knox:12002/gateway/test/ferrerorui/site/
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8

And, obviously, I'm getting a 404 back from Knox, because
knox:12002/production/datapoints is not there, it should be
knox:12002/gateway/test/ferrerorapi/production/datapoints.
But I don't really know how to make that with filters. Would it require
something like the following?

<filter name="FERRERORUI/ferrerorui/outbound/requests/filter">
        <content type="application/json">
            <apply path="???"
rule="FERRERORUI/ferrerorui/outbound/requests"/>
        </content>
</filter>

What does the path mean on a filter? Isn't this "apply" already pointing to
a rule that contains a "path" and a "rewrite"?

Thanks.

On Tue, 30 Apr 2019 at 03:36, Sandeep Moré <[email protected]> wrote:

> Hello Odon,
>
> What does the response from the the ferrero UI look like? for the last
> rewrite rule, looks like you are having issues rewriting outbound requests,
> what response are you dealing with, JSON, HTML, plain text ? depending on
> that you probably need to add a filter for that specific content type. I
> think you are very close !
>
> Best,
> Sandeep
>
>
> On Mon, Apr 29, 2019 at 1:47 PM Odon Copon <[email protected]> wrote:
>
>> Hi,
>> I have been following the steps from
>> https://cwiki.apache.org/confluence/display/KNOX/Proxying+a+UI+using+Knox but
>> I'm having some issue making something work, so would double check with you
>> to understand if I'm making wrong assumptions.
>> I have a UI made with React which URL is ferrerorui:8080/site/ that
>> contains some graphs generated by some requests to
>> ferrerorapi/production/datapoints. When I put Knox in place, I can access
>> the UI by accessing knox:12002/gateway/test/ferrerorui/site/ and also I can
>> send requests to the API by doing
>> knox:12002/gateway/test/ferrerorapi/production/datapoints.
>>
>>
>> This is the service defined (ferrerorapi, the API the UI consumes):
>>
>> service.xml
>>
>> <service role="FERRERORAPI" name="ferrerorapi" version="0.0.1">
>>   <routes>
>>     <route path="/ferrerorapi/**"/>
>>   </routes>
>> </service>
>>
>> rewrite.xml
>>
>> <rules>
>>   <rule dir="IN" name="FERREORAPI/ferrerorapi/inbound"
>> pattern="*://*:*/**/ferrerorapi/{path=**}?{**}">
>>     <rewrite template="{$serviceUrl[FERRERORAPI]}/{path=**}?{**}"/>
>>   </rule>
>> </rules>
>>
>>
>> Obviously, the API requests that generate the graphs are all failing with
>> 404 when I access the UI, because they are hitting
>> knox:12002/production/datapoints instead of
>> knox:12002/gateway/test/ferrerorapi/production/datapoints
>>
>>
>> This is the UI service:
>>
>> service.xml
>>
>> <service role="FERREORUI" name="ferrerorui" version="0.0.1">
>>   <routes>
>>     <route path="/ferrerorui"/>
>>     <route path="/ferrerorui/**"/>
>>           <rewrite apply="FERRERORUI/ferrerorui/outbound/requests"
>> to="response.body"/>
>>   </routes>
>> </service>
>>
>> rewrite.xml
>>
>> <rules>
>>     <rule dir="IN" name="FERRERORUI/ferrerorui/inbound/root"
>> pattern="*://*:*/**/ferrerorui/">
>>     <rewrite template="{$serviceUrl[FERRERORUI]}/"/>
>>   </rule>
>>   <rule dir="IN" name="FERRERORUI/ferrerorui/inbound/path"
>> pattern="*://*:*/**/ferrerorui/{path=**}?{**}">
>>     <rewrite template="{$serviceUrl[FERRERORUI]}/{path=**}?{**}"/>
>>   </rule>
>>   <rule dir="OUT" name="FERRERORUI/ferrerorui/outbound/requests"
>> pattern="*://*:*/**/production/{path=**}?{**}">
>>     <rewrite template="{$serviceUrl[FERRERORUI]}/{path=**}?{**}"/>
>>   </rule>
>> </rules>
>>
>>
>> Tried with this last rewrite to convert on the UI, everything that had
>> production as part of the path (api call) to be rewritten, but doesn't seem
>> to work. The API call from the UI still don't contain the missing
>> "gateway/test/ferrerorapi/".
>>
>> Is there anything that you spot that I'm not doing correctly?
>> Thanks.
>>
>

Reply via email to