代码之家  ›  专栏  ›  技术社区  ›  czolbe

跨源iframe覆盖sessionid

  •  0
  • czolbe  · 技术社区  · 6 年前

    我有一个SpringBoot/Angular组件(这是一个Angular组件,通过SpringSecurity验证并从SpringRestAPI加载其数据)。这个SungBoo/角组件正在加载一个JavaEE应用程序的iFrAME中。

    它们也分别加载在单独的上下文中,localhost:8080和localhost:7001。

    问题是,每当在iFrAME中加载和验证跳转引导/角度组件时,它就重写JSSESSID,这样,我在JavaEE应用程序上所做的下一个HTTP请求不再是原来的JSSESSID,从而导致错误。

    在使用跨源站iframe时,如何避免以这种方式覆盖jsessionid?

    enter image description here

    enter image description here

    enter image description here

    本地主机中的代码:包含IFRAME: 7001(JavaEE应用程序): 基本上,所发生的是我将一个定制的post请求调用到我的spring processlogin控制器,以验证spring/angular组件,并在iframe中显示请求。

    <body>
    <script>
    
    
        function sendForm(){
    
        var username = document.getElementById("sessionUser").value;
        var password = document.getElementById("sessionPw").value;
    
        var param = {};
        param['username'] = username;
        param['password'] = password;
    
    
        post('http://localhost:8080/processLogin', param );
        }
        </script>
    
    
             <iframe   id=menuFrame frameborder="0" style="overflow:hidden;" src=""></iframe>
    
    
    </body>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   jesrzrz    6 年前

    实际上,您处于两个分离的上下文中,所以您有两个不同的sessionid。为了共享sessionid,您应该实现负载平衡或其他允许在服务器级别共享会话的机制。