Если вы можете изменить источник приложения, вы можете изменить его, чтобы использовать метод «параметров» для извлечения JSESSIONID. По умолчанию (по крайней мере, на Tomcat) JSESSIONID не будет передаваться в сообщении формы, но вы можете изменить свою форму, чтобы включить его. Например, страница JSP может выглядеть так:
<form action="index.jsp" method="post">
<input type="hidden" name="JSESSIONID" value="${pageContext.session.id}"/>
<input type="submit"/>
</form>
В качестве альтернативы вы можете попытаться получить JSESSIONID из файла cookie сеанса, используя другое условие. Я не пробовал следующее, но представьте, что это может сработать для вас:
<rule>
<name>Proxy URL with jsession ID's</name>
<note></note>
<condition type="cookie" name="JSESSIONID"/>
<from>^/([^?]*)\.htm(.*)$</from>
<to type="proxy">%{request-url};jsessionid=%{cookie:JSESSIONID}$2</to>
</rule>
Существуют и другие условия, которые вы потенциально можете использовать для проверки того, был ли идентификатор сеанса действительным (requested-session-id-valid), полученным из файла cookie (requested-session-id-from-cookie ) или исходит из URL-адреса действия публикации (requested-session-id-from-url).
Я не уверен, какую версию UrlRewriteFilter вы используете, но если вы посмотрите на пример «Постоянно перенаправлять входящие URL-адреса, содержащие jsessionid.» по следующему URL-адресу, вы увидите, что JSESSIONID не является таким параметром, как другие параметры POST/GET.
http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/guide.html
Я настоятельно рекомендую использовать Firefox/Firebug вместе, чтобы изучить ваш POST-запрос и заголовки, чтобы вы поняли, что именно передается. (Я уверен, что есть и другие подобные инструменты, например, Fiddler 2 и т. д.).
person
Mark McLaren
schedule
30.10.2011