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



我正在尝试通过tomcat上的登录实现登录。登录servlet称为iniciarsion,所以我将以下内容添加到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时,请求参数正在丢失。

如何解决此问题?

听起来好像您的登录页面(其中定义了"登录")不受保护。当它通过HTTP击中您/iniciarsesion Servlet时,Tomcat将HTTP重定向到SSL站点。真正的重定向不会保留最初发送到服务器的数据,因此您会丢失数据。我的建议是将您的登录页面包含在机密范围中。

SSL的整个点是确保运输的。如果首先通过HTTP发送登录凭据,那么将其重定向到HTTP是没有意义的,因为您已经在"清除"中发送了信息。您要做的是通过明确设置表单URL或通过HTTPS加载登录页来将登录格式发布到HTTPS URL。这将涉及将登录页添加为受保护的资源,就像您的登录servlet一样。

最新更新