Я использую версию 0,12 Knox и настроил службу для прокси через knox, как указано ниже:
Моя топология:
<topology>
<gateway>
<provider>
<role>webappsec</role>
<name>WebAppSec</name>
<enabled>true</enabled>
<param>
<name>cors.enabled</name>
<value>true</value>
</param>
<param>
<name>cors.supportedMethods</name>
<value>GET,HEAD,POST,OPTIONS,PUT</value>
</param>
<param>
<name>xframe.options.enabled</name>
<value>true</value>
</param>
<param>
<name>xframe.options</name>
<value>SAMEORIGIN</value>
</param>
</provider>
<provider>
<role>identity-assertion</role>
<name>Default</name>
<enabled>true</enabled>
</provider>
<service>
<role>MYSERVICE</role>
<url>http://localhost:9090</url>
</service>
</topology>
, а сама служба описывается как
<policies>
<policy role="webappsec"/>
<policy role="authentication" name="Anonymous"/>
<policy role="rewrite"/>
<policy role="authorization"/>
</policies>
<routes>
<route path="/myservice"/>
<route path="/myservice/**"/>
</routes>
<dispatch classname="org.apache.hadoop.gateway.dispatch.PassAllHeadersDispatch"/>
<rule dir="IN" name="MYSERVICE/myservice/inbound/root" pattern="*://*:*/**/myservice/">
<rewrite template="{$serviceUrl[MYSERVICE]}/"/>
</rule>
<rule dir="IN" name="MYSERVICE/myservice/inbound/path" pattern="*://*:*/**/myservice/{**}">
<rewrite template="{$serviceUrl[MYSERVICE]}/{**}"/>
</rule>
При попытке доступа к сервису запросы GET работают должным образом.POST-запросы также направляются в службу, как только тело POST не отправляется целевой службе.Не уверен, в чем проблема.
Спасибо, Сатиш