Я использую Jetty Transparent Proxy Servlet для интеграции с ZOPE (python).Это позволяет мне применять различные java-фильтры, не мешая ZOPE и его расширениям.Мы используем его в основном для аутентификации и назначения привилегий.
Он отлично работает для обычных веб-страниц, обслуживаемых ZOPE (при условии GET-запросов), но не работает при работе с формами POST, размещенными на ZOPE.
Я обнаружил, что запрос правильно передается через цепочку фильтров (в пути еще несколько фильтров), что-то идет не так в конце.Я могу наблюдать, как запрос достигает ZOPE (используя журналы запросов), но ответ никогда не возвращается.У меня ограниченные возможности исследовать что-либо на ZOPE - только смотреть его журнал запросов.
Это не ошибка прокси, потому что, когда все фильтры отключены , все работает нормально.
Могу ли я сделать что-то с объектом запроса / ответа?Я что-то упустил в своих фильтрах?Куда мне еще копать?
Вот урезанный пример фильтра, который я использую.
public class AuthFilter implements Filter{
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession();
String secret = request.getParameter("cessotk");
if ( secret != null && secret.equals (SECRET_TOKEN ) ){
log ("Discovered secret user");
session.setAttribute(AUTH_PARAM, true);
AuthUser secretUser = new AuthUser();
secretUser.setUsername("SECRET_SYSTEM_USER");
session.setAttribute(AUTH_USER_KEY, secretUser );
chain.doFilter(request, response);
}
}
}