【问题标题】:Cross origin iframe overwrites sessionid跨域 iframe 覆盖 sessionid
【发布时间】:2018-05-28 08:50:21
【问题描述】:

我有一个 Springboot/angular 组件(这是一个由 Spring 安全认证并从 Spring REST API 加载其数据的 angular 组件)。这个 springboot/angular 组件正在加载到 JAVA EE 应用程序的 iframe 中。

它们也分别加载到不同的上下文中,分别为 localhost:8080 和 localhost:7001。

问题是,每当 springboot/angular 组件在 iframe 中加载和验证时,它都会覆盖 Jsessionid,这样我在 JAVA EE 应用程序上发出的下一个 HTTP 请求就不再是原始的 Jsessionid,因此会导致错误。

在使用跨域 iframe 时,如何避免 Jsessionid 以这种方式被覆盖?

localhost:7001(JAVA EE 应用程序)中包含 iframe 的代码: 基本上,发生的事情是我向我的 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>

【问题讨论】:

  • 版主注意:请不要破坏您的帖子。一旦您发布问题,它们就属于该网站及其用户。即使它不再对您有用,它也可能对将来的某人有所帮助。回答者也会努力写下他们的答案,如果您从帖子中删除了内容,这将不再有用。另外,请注意,通过在 Stack Exchange 网络上发布,您已授予 SE 分发该内容的不可撤销的权利(根据 CC BY-SA 3.0 许可)。根据 SE 政策,任何破坏行为都将被撤销。

标签: java spring angular spring-boot iframe


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    相关资源
    最近更新 更多