仅对基于servlet的webapp中的某些页面使用HTTPS

时间:2009-08-25 18:41:12

标签: tomcat servlets https web.xml

我在Tomcat 6服务器上运行了一个基于servlet的webapp。 URL方案是HTTPS。整个网站目前正在通过HTTPS提供。但我真正想做的是仅针对某些操作(如购买和登录)设置HTTPS。 Tomcat中是否有任何可以帮助我轻松完成此任务的配置?

是否需要对通过HTTPS和HTTP持久化会话进行任何代码更改?

2 个答案:

答案 0 :(得分:11)

实际上,理想情况下,这是在您的Web应用程序的web.xml文件中配置的。您只需指定一些应该<security-constraint><web-resource-collection>安全的网址,并将HTTPS要求指定为<transport-guarantee>,其值为CONFIDENTIAL。容器将透明地管理重定向。简单。

<security-constraint>
  <web-resource-collection>
     <web-resource-name>My Secure Stuff</web-resource-name>
     <url-pattern>/some/secure/stuff/*</url-pattern>
     <url-pattern>/other/secure/stuff/*</url-pattern>
     ...
  </web-resource-collection>
  <user-data-constraint>
     <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>

答案 1 :(得分:2)

您只需要设置一个HTTP连接器,所有的servlet也可以在HTTP上使用。

对于需要HTTPS的操作,您需要自己执行此操作,

if (!request.isSecure()) {
    response.sendError(HttpServletResponse.SC_FORBIDDEN);
    return;
}

在我们的例子中,用户可以输入登录URL,因此如果输入HTTP URL,我们会将用户重定向到HTTPS页面。

如果您正在讨论Servlet会话(JSESSIONID),那么在HTTP和HTTPS之间共享会话时不应该有任何问题,因为Tomcat不会在cookie中添加“安全”标志。