有一堆链接访问我的servlet而没有https
由于servlet是一种通用形式,并且http url使用随机id生成,所以很难使用modrewrite或类似的东西。从http重定向到https并返回到http内的servlet
所以我修改我的servlet的代码这样的:
//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(请求,响应)
请求和响应是在所有的请求/响应有关的事项都应用服务器组件的特定视图。他们有这样的方法:
getServletResponse
公共HttpServletResponse的getServletResponse(布尔应答)
只在特殊情况下Gets the original servlet response. Note: This should be accessed
。如果参数设置为true,则运行时的所有内容处理都将被跳过。如果请求是从基于小服务程序的 连接发起的,则此项仅为 。
那么,怎样才能响应,该表单提交安全的方式进行操作,但是用户可以通过HTTP对网站的其余部分之后继续。
我决定只派提出通过https和重定向用户返回到http aterwards。如果用户想要查看他发送了带有弹出窗口的https链接的内容,则会显示出来。这样我就不会遇到困扰https的蜜蜂问题,并且内容被提交到安全的地方。 – macbert