代码之家  ›  专栏  ›  技术社区  ›  Keshav

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

  •  7
  • Keshav  · 技术社区  · 17 年前

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

    在HTTPS和HTTP之间持久化会话是否需要任何代码更改?

    2 回复  |  直到 9 年前
        1
  •  11
  •   BalusC    9 年前

    实际上,理想情况下,这是在Web应用的web.xml文件中配置的。您只需指定一些应该安全的URL <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>
    
        2
  •  2
  •   ZZ Coder    17 年前

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

    对于需要https的操作,您需要像这样自我强制执行,

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

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

    如果您谈论的是servlet会话(jsessionid),那么在HTTP和HTTPS之间共享会话不应该有任何问题,因为Tomcat没有向cookies添加“secure”标志。