0

我需要为我的表单操作创建 URL,但表单应在https当前运行在 9002 端口上的 HTTPS 底层系统下提交。我无法在我的 JSP 页面中使用以下选项

<form:form action="${request.contextPath}/springSecurity/login"
method="post" commandName="loginForm" target="guestFrame"> 

因为在 HTTP 中,上下文路径以 HTTP 形式出现,系统将抛出异常,因为表单应由 HTTPS 提交。我无法将操作 URL 硬编码为当前正在开发的主机名localhost,即使 HTTPS 端口也是可配置的,因此它甚至无法硬编码。

有什么方法可以使用 JSTL 或任何其他方式在我的 JSP 中创建 URL,以便我可以在 HTTPS 下提交表单

4

1 回答 1

1

HttpServletRequest.getServerName()将给出服务器名称。但是,没有办法获得https端口。443如果你想在你的方法中修复它,你应该使用默认值。

但好的解决方案是使用Security Transport Guarantee登录 url,这样服务器会自动将springSecurity/login页面重定向到https.

将此条目添加到web.xml将自动重定向springSecurity/loginhttps

<security-constraint>
    <web-resource-collection>
        <web-resource-name>secure</web-resource-name>
        <url-pattern>/springSecurity/login</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>
于 2012-06-20T08:19:52.863 回答