1

我正在尝试在我们当前的项目中实现easyXDM,以便用户能够在一个工作流程中使用多个系统,并从一个界面访问。换句话说,当用户打开页面 X 时,应该将来自另一个域的应用程序加载到 iframe 中供用户使用(用户必须先进行身份验证)。

任务本身要求应根据某些条件打开应用程序的某个部分(假设对于来自部门 A 的用户,我们应该在所述应用程序中打开表单 Af)。

所以这是我试图在这里编码的逻辑:

  1. 用户打开页面 X(消费者)
  2. 带有应用程序登录页面(Provider1)的 iframe 被加载到 Consumer 上的 iframe
  3. 用户登录应用程序
  4. Consumer 上的 JS 接收来自 Provider1 的 headers
  5. Consumer 上的 JS 加载 Provider2 以及之前收到的标头,并告诉 Provider2 导航到某个表单
  6. Provider2 内部的 JS 接收来自 Consumer 的消息并导航到该应用程序内部的某个表单。

这是我现在得到的(几乎是easyXDM自述文件中的一个简单示例):

提供者

    var socket = new easyXDM.Socket({
        onMessage: function(message, origin){
            // do something
        }
    });

消费者

var socket = new easyXDM.Socket({
    remote: "http://remote/page",
    container: "test",
    onMessage: function(message, origin){
        alert("Received '" + message + "' from '" + origin + "'");
        var socket1 = new easyXDM.Socket({
            remote: "http://remote/page2",
            container: "test",
            headers: providers2_headers,
            onMessage: function(message, origin){
                alert("Received '" + message + "' from '" + origin + "'");            
            },
            onReady: function() {
                this.container.getElementsByTagName("iframe")[0].style.width = "100%";
                socket1.postMessage("Yay, it works!");
            }
        });
    },
    onReady: function() {
    this.container.getElementsByTagName("iframe")[0].style.width = "100%";
        socket.postMessage("Yay, it works!");
    }
});

问题

如何从 Provider1 获取标头并使用它们来加载 Provider2?

4

0 回答 0