tomcat中客户端登录的时候如何从http转到https, 登录成功后再转到http?环境可以通过http/https访问. 
客户端ajax登录, 想用https. 服务器验证成功后自动转向http.
普通url访问某个页面, 可以将http -> https. 其他就不知道如何做了.和163邮箱登录一样的效果.

解决方案 »

  1.   

    https验证后,将验证的结果加密写入cookie,并设定一定的生命周期,然后跳转至不安全的http,新浪是这么做的,理论上163也应该是这么做。
      

  2.   

    那你只能放到get参数里面了,在分布式环境中,别的就没招了。
      

  3.   

    好的. 谢谢wanghao72214. 现在吧session保存起来应该可以现在修改web.xml, 加入下面代码:<security-constraint>   
        <!-- Authorization setting for SSL --> 
        <web-resource-collection >   
             <web-resource-name >SSL</web-resource-name>
            <url-pattern>/login.html</url-pattern>   
        </web-resource-collection> 
        <user-data-constraint>   
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>   
        </user-data-constraint>   
    </security-constraint>  正常http://localhost:8080/login.html会自动转成https://localhost:8445/login.html
    可是ajax却提交不了请求, 没有到login.html中. 不知道怎么回事
      

  4.   

    我觉得ajax可能确实不能。你的http转向https,可能实际上是服务器推送到浏览器的时候,推动了一条重定向指令,比如:Location:href="..."。如果是这种机制那么ajax确实做不到,只能显式指定。如果是webserver或者application server做了相应的转向工作的话,那ajax的表现就无法解释了。
      

  5.   

    继续研究. ajax 我想应该是可以的. 客户端如何提交, 服务器应该是不知道的
      

  6.   

    采用URL重写
    将http://${域名}/log重写为https://${域名}/log,用户数据库增加一字段IFLOG,在https登录后在重写为http:${域名}/.....
    注:http和https是可以传承session的
      

  7.   

    补充:
    将http://${域名}/log1 重写为https://${域名}/log2,用户数据库增加一字段IFLOG,在https登录后,修改字段,设置session,再重写为http:${域名}/..... 
    注:http和https是可以传承session的
    我都是这么做的
      

  8.   

    To: srx5223113我有点不明白. 有其它相关资料吗?