Разработка прокси сервлета, который может обрабатывать соединения HTTPS - PullRequest
2 голосов
/ 05 февраля 2012

Я разработал сервлет Java, который может передавать HTTP-запросы от браузера. У меня проблема с прокси HTTPS-запросами.
Похоже, что сервлет не получает HTTPS-запросы от браузера.
После изучения этого вопроса я заметил, что HTTP-запросы начинаются с простого запроса GET, тогда как HTTPS-запросы начинаются с запроса CONNECT, как показано в приведенном ниже фрагменте журнала:

"CONNECT ajax.googleapis.com:443 HTTP/1.1" 200

У меня вопрос: можно ли обработать этот запрос с помощью моего сервлета?

public class MyProxyServlet extends HttpServlet {
    @Override
    public void init(final ServletConfig config) throws ServletException {
        super.init(config);
    }

    @Override
    protected void doGet(final HttpServletRequest request,
            final HttpServletResponse response) throws ServletException,
            IOException {
    }

    @Override
    protected void doPost(final HttpServletRequest request,
            final HttpServletResponse response) throws ServletException,
            IOException {
    }
}

Если да, то где и как?

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Поскольку глагол CONNECT не обрабатывается реализацией HttpServlet по умолчанию, вам придется переопределить Service метод javax.servlet.http.HttpServlet в вашем сервлете и самостоятельно обработать метод CONNECT.Оригинальная реализация, кажется, игнорирует это с этим resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);.Взгляните на исходный код HttpServlet http://www.docjar.com/html/api/javax/servlet/http/HttpServlet.java.html

0 голосов
/ 05 февраля 2012

Обычно рукопожатие и обмен HTTPS обрабатываются контейнером сервлетов с браузером. Для сервлета не нужно знать, что это за режим. Вы должны определить правильный соединитель в конфигурации сервера для прослушивания HTTPS, и ничего не нужно делать на стороне веб-приложения или сервлета. Запрос будет одинаковым для сервлета, независимо от того, доступен ли он по http: // или https: //. Только то, что сервер должен быть настроен на прием https://

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...