仅对基于 servlet 的 web 应用程序中的某些页面使用 HTTPS

发布于 2024-08-03 02:31:13 字数 187 浏览 6 评论 0原文

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

是否需要更改任何代码才能跨 HTTPS 和 HTTP 保持会话?

I have a servlet based webapp running on Tomcat 6 server. The URL scheme is HTTPS. The entire site is currently being served on HTTPS. But what I would really like to do is setup HTTPS only for certain operations like purchase and login. Is there any configuration in Tomcat that can help me do this easily?

Are there any code changes required to persist session across HTTPS and HTTP?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

噩梦成真你也成魔 2024-08-10 02:31:13

实际上,理想情况下,这是在 Web 应用程序的 web.xml 文件中配置的。您只需将某些应该安全的 URL 指定为 并将 HTTPS 要求指定为 即可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>

Really, ideally, this is configured in your web app's web.xml file. You simply specify certain URLs that should be secure as <security-constraint><web-resource-collection> and specify HTTPS requirement as <transport-guarantee> with value of CONFIDENTIAL. The container will manage redirects transparently. Simple.

<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>
暮年慕年 2024-08-10 02:31:13

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

对于需要 HTTPS 的操作,您需要像这样自己强制执行此操作,

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

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

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

You just need to setup a HTTP connector and all your servlet will be available on HTTP also.

For operations requiring HTTPS, you need to enforce this yourself like this,

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

In our case, the login URL may be typed in by user so we redirect the user to HTTPS page if HTTP URL is entered.

If you are talking about Servlet sessions (JSESSIONID), you shouldn't have any issues sharing sessions between HTTP and HTTPS since Tomcat doesn't add "secure" flag to the cookies.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文