Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重定向到HTTPS时丢失请求属性_Java_Http_Tomcat_Servlets_Ssl - Fatal编程技术网

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

Java 重定向到HTTPS时丢失请求属性,java,http,tomcat,servlets,ssl,Java,Http,Tomcat,Servlets,Ssl,我试图在Tomcat上通过SSL实现登录。 登录servlet称为IniciarSession,因此我将以下内容添加到web.xml中: <security-constraint> <web-resource-collection> <web-resource-name>Seguridad en Acceso</web-resource-name> <u

我试图在Tomcat上通过SSL实现登录。 登录servlet称为IniciarSession,因此我将以下内容添加到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>
这将返回null,当从http重新定向到https时,请求参数将丢失


如何解决这个问题?

听起来您的登录页面(定义了“登录”的地方)没有受到保护。当tomcat通过HTTP访问您的/IniciarSessionservlet时,它将执行一个HTTP重定向到SSL站点。True重定向不会保留最初发送到服务器的数据,因此会丢失数据。我的建议是将您的登录页面包含在保密范围内。

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

SSL与登录无关。这是关于保护传输层的。@Tichodroma您可以使用SSL证书和/或公钥进行身份验证users@memosdp是的,但这并不是OP想要做的。@Tichodroma我并没有为OP这么说,但对你来说,我认为这是显而易见的。。。通过http和服务器连接的用户重定向到https,然后重置环境。只要以某种方式将用户数据保存在缓存中,然后在ssl会话OK中传递它们,我希望在将表单发布到https URL之前找到一个解决方案。现在的问题是处理Servlet上下文blabla..是的,但是登录页面是主页面(您在标题上有表单),我不想保护所有站点如果您通过HTTP发布到Servlet,那么您将发送数据。简单地将该指令添加到web.xml并不能保护您免受以纯文本形式发送凭据的影响。为了保护它,除了让客户端将数据发布到https url之外,您别无选择。使用最初生成HTTP页面的请求和响应对象中的一些数据(或者只是硬编码),可以相当容易地获得完全限定的路径。
String nick=(String)req.getParameter("login");