1

У меня вопрос о urlrewritefilter, и до сих пор я ничего не мог найти об этом в сети.Как перенаправить http POST с urlrewritefilter

Я хочу перенаправить http POST в Tomcat7. Вот пример ...

вызов является HTTP POST к ULR как

http://localhost:8080/oldApplication/Example?a=123&b=2 

Этот вызов также содержит некоторое содержание либо как XML или JSON. Фильтр настроен так, как это работает, и urlrewrite.xml содержит:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 

<urlrewrite use-query-string="true"> 
    <rule> 
     <condition type="method">POST</condition> 
     <from>^(.*)$</from> 
     <to type="redirect">/newApplication$1</to> 
    </rule> 
</urlrewrite> 

В доступе вход я могу видеть, что вызов

http://localhost:8080/oldApplication/Example?a=123&b=2 

перенаправляется

http://localhost:8080/newApplication/Example?a=123&b=2 

Прекрасно до сих пор. Проблема в том, что переписывание изменяет метод, так что новый url вызывается с помощью HTTP GET вместо HTTP POST. Я попытался добавить условие к методу, но получил HTTP GET после перезаписи.

Кто-нибудь знает, как настроить фильтр rewrite, чтобы этого избежать?

+0

Я извиняюсь ... теперь я знаю ответ ... редирект из HTTP POST не представляется возможным – DK6886

+0

Вы можете ответить на свой вопрос, просто закрыть его. – Qben

ответ

1

Вы используете тип атрибута перенаправлять на type="redirect"

Этот атрибут эквивалентен HttpServletResponse.sendRedirect(), что на самом деле делает новый запрос к месту назначения, используя GET метод, поэтому все параметры теряются вместе с методом HTTP.

Значение по умолчанию для этого атрибута, если не информировано, forward, что эквивалентно HttpServletRequest.getRequestDispatcher(url).forward()

Forwarding сохранит все параметры запроса, а также метод HTTP.

Итак, чтобы получить желаемый результат, вы должны опустить свой атрибут типа или установить его на forward.

<to>/newApplication$1</to> 

или

<to type="forward">/newApplication$1</to> 
Смежные вопросы