есть несколько ссылок на мой сервлет без https
Поскольку сервлет является универсальной формой, а URL-адреса http генерируются со случайным идентификатором, трудно использовать modrewrite или что-то в этом роде.
Поэтому я изменил свой сервлет с таким кодом:
//redirect to https
String sec = servletRequest.getParameter("Sec");
String qString = servletRequest.getQueryString();
if (StringUtils.isEmpty(sec)){
try {
HttpServletResponse rsp = request.getServletResponse(true);
String PORTAL_URL = l_aliasHelper.getPath(request);
rsp.sendRedirect("https://"+servletRequest.getServerName() +PORTAL_URL+"?" +qString+"&Sec=yes");
} catch (Exception e) {
e.printStackTrace();
}
}
Теперь все отлично работает!
Но что, если я захочу вернуться на http, потому что я хочу избежать назойливых предупреждений о небезопасных элементах на других страницах.
Так как мне снова перенаправить на http после того, как пользователь отправил форму?
Если все работает хорошо, пользователь получает ответ с сообщением об успехе по тому же URL-адресу, с которого он начал.
So the cycle goes like this:
http://<somedomain>/<anypath>?<anyid>
https://<somedomain>/<anypath>?<anyid>&Sec=yes
and now it should go back maybe with a step inbetween to
http://<somedomain>/<anypath>?<anyid> <- the success message should be
displayed here
последний метод перед отображением сообщения:
sucessmessage.render (запрос, ответ)
запрос и ответ являются специфическими представлениями компонента appserver по всем вопросам, связанным с запросом / ответом У них есть методы, такие как:
getServletResponse
публичный HttpServletResponse getServletResponse (логический ответ)
Gets the original servlet response. Note: This should be accessed
только в исключительных случаях. Если для параметра установлено значение true, все
дальнейшая обработка контента во время выполнения будет пропущена. Это
доступно, только если запрос был инициирован из сервлета
подключение.
Итак, как можно манипулировать ответом таким образом, чтобы форма была отправлена в безопасном режиме, но впоследствии пользователь мог продолжить с http на остальной части сайта.