gpt4 book ai didi

jsp - 如何让我的 jsp Web 应用程序从安全 (HTTPS) 协议(protocol)切换到非安全 (HTTP) 协议(protocol)?

转载 作者:行者123 更新时间:2023-11-28 22:11:44 28 4
gpt4 key购买 nike

我有一个用纯 JSP 和 JavaBeans 编写的网上商店,它部署在 Tomcat 上并且运行良好。 Tomcat 已成功配置 SSL。它只有五页:

  • 主页(非安全页面)- 显示主页
  • 产品页面(非安全页面)- 始终显示单个产品
  • 购物车页面(非安全页面)- 添加产品后显示购物车页面
  • 结帐页面(安全页面)- 包含客户地址、付款方式、送货方式等所有信息的单一结帐页面
  • 收据页面(安全页面)- 生成订单号并显示订单总额。

每当我从购物车页面导航到结帐页面时,浏览器会自动将协议(protocol)从 http -> https 和端口从 8080 -> 8443 切换,这符合预期。然而,问题在于,每当用户从结帐页面导航到主页/产品页面时,它不会将其从 https -> http8443 -> 8080 切换回来。首页/产品和购物车页面 url 都被转换为安全页面,这不是我想要的。

web.xml

<!-- Security for Checkout module -->
<security-constraint>
<web-resource-collection>
<web-resource-name>mycheckout</web-resource-name>
<url-pattern>/jsp/checkout/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

文件夹结构:

jsp/
home.jsp
product.jsp
cart.jsp
checkout/
checkout.jsp
receipt.jsp

最佳答案

您可以在重定向之前构建 URL:

 if(request.getScheme().equals("https"){
String redirect = "http://"+ request.getServerName()+":"+ getServletContext().getInitParameter("http_port")+"/"+request.getContextPath()+"/myurl";
response.sendRedirect(redirect);
}

编辑:

客户端重定向更通用,因为它可以将您发送到完全不同的服务器,或更改协议(protocol)(例如从 HTTP 到 HTTPS),或两者兼而有之。并且浏览器知道新的 URL。但这需要在服务器和客户端之间进行额外的来回操作。在这里查看最后一个答案:requestDispatcher Interface Vs sendRedirect

关于jsp - 如何让我的 jsp Web 应用程序从安全 (HTTPS) 协议(protocol)切换到非安全 (HTTP) 协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34799223/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com