我需要为表单操作创建URL,但表单应该在https
下提交,目前在HTTPS的9002端口上运行的底层系统。我不能在我的JSP页面中使用以下选项
<form:form action="${request.contextPath}/springSecurity/login"
method="post" commandName="loginForm" target="guestFrame">
因为在HTTP中,上下文路径以HTTP形式出现,系统将抛出异常,因为表单应该由HTTPS提交。
我无法将操作URL硬编码为当前正在开发中,因为主机名为localhost
,即使HTTPS端口是可配置的,因此其偶数也不能进行硬编码。
有没有办法可以使用JSTL或其他任何方式在我的JSP中创建URL,以便我可以在HTTPS下提交表单
答案 0 :(得分:1)
HttpServletRequest.getServerName()
将提供服务器名称。但是,没有办法获得https
端口。如果您想在方法中修复它,则应该使用默认的443
。
但好的解决方案是使用Security Transport Guarantee
作为登录网址,以便服务器自动将springSecurity/login
页面重定向到https
。
将此条目添加到web.xml
,这会自动将springSecurity/login
重定向到https
。
<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>