我正在尝试在我们当前的项目中实现easyXDM,以便用户能够在一个工作流程中使用多个系统,并从一个界面访问。换句话说,当用户打开页面 X 时,应该将来自另一个域的应用程序加载到 iframe 中供用户使用(用户必须先进行身份验证)。
任务本身要求应根据某些条件打开应用程序的某个部分(假设对于来自部门 A 的用户,我们应该在所述应用程序中打开表单 Af)。
所以这是我试图在这里编码的逻辑:
- 用户打开页面 X(消费者)
- 带有应用程序登录页面(Provider1)的 iframe 被加载到 Consumer 上的 iframe
- 用户登录应用程序
- Consumer 上的 JS 接收来自 Provider1 的 headers
- Consumer 上的 JS 加载 Provider2 以及之前收到的标头,并告诉 Provider2 导航到某个表单
- 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?