重定向到HTTPS时丢失请求属性

时间:2012-10-26 13:26:37

标签: java http tomcat servlets ssl

我正在尝试在Tomcat上通过SSL实现登录。 登录servlet名为IniciarSesion,因此我将以下内容添加到web.xml:

<security-constraint>
            <web-resource-collection>
                <web-resource-name>Seguridad en Acceso</web-resource-name>
                 <url-pattern>/IniciarSesion</url-pattern>
            </web-resource-collection>
            <user-data-constraint>
             <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
</security-constraint>

现在的问题是,当我尝试通过执行以下操作获取输入密码时:

String nick=(String)req.getParameter("login");

返回null,当从http重定向到https时,请求参数丢失。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

听起来好像您的登录页面(定义“登录”)不受保护。当它通过HTTP命中你的/ iniciarSesion servlet时,tomcat会对SSL站点执行HTTP REDIRECT。真正的重定向不会保留最初发送到服务器的数据,因此会丢失数据。我的建议是在CONFIDENTIAL范围内包含您的登录页面。

答案 1 :(得分:0)

SSL的重点是确保传输安全。如果您首先通过http发送登录凭据,那么重定向到https是没有意义的,因为您已经“明确地”发送了信息。您所做的是将您的登录表单发布到https URL,方法是明确设置表单URL,或者通过https加载登录页面。这将涉及将登录页面添加为受保护资源,就像您的登录servlet一样。