Общение с двумя провайдерами в одном домене
Я пытаюсь внедрить easyXDM в наш текущий проект, чтобы пользователи могли работать с несколькими системами в течение одного рабочего процесса с доступом из одного интерфейса. Другими словами, когда пользователь открывает страницу X, приложение из другого домена должно быть загружено в iframe, чтобы пользователь мог работать с ним (пользователь должен сначала пройти аутентификацию).
Само задание требует, чтобы определенная часть приложения была открыта в зависимости от некоторых условий (допустим, что для пользователя из отдела A мы должны открыть форму Af в указанном приложении).
Вот логика, которую я пытаюсь здесь кодировать:
- Пользователь открывает страницу X (Потребитель)
- Iframe со страницей входа приложения (Provider1) загружается в iframe на Consumer
- Пользователь входит в приложение
- JS на Потребителе получает заголовки от Провайдера1
- JS на Потребителе загружает Provider2 с полученными ранее заголовками и сообщает Provider2, чтобы перейти к определенной форме
- JS внутри Provider2 получает сообщение от потребителя и переходит к определенной форме внутри этого приложения.
Вот что я получил на данный момент (довольно простой пример из readme 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?