Мобильное приложение My Cordova использует iframe для загрузки на веб-сайт.Я хочу отправлять и получать содержимое через iframe с postMessage()
.Тем не менее, в ходе моего тестирования источник моего мобильного приложения всегда localhost:8000
или file://
.Во всех других примерах на этом сайте используется уникальный домен и источник (например, www.example.com), но мое происхождение явно не уникально.
Как я могу защитить связь между моим мобильным приложением и моим веб-сайтом, если мое происхождениеэто localhost:8000
/ file://
?Если по какой-либо причине я не могу, могу ли я использовать токены доступа для проверки любого сообщения, как показано ниже?
mobile.app
var iframe = document.getElementById('iframe');
var data = {
'access_token': 'whatever'
};
iframe.contentWindow.postMessage(data, 'localhost:8000');
website.com
window.addEventListener('message', function(event) {
if (!event.data || !event.data.access_token) {return;}
// ajax request to validate the token here
});
Если это поможет, то, что я делаю, это:
- Определение, когда фрейм iframe завершил загрузку.iframe отправляет обратно объект.
{'loaded':true}
- Отправка объекта с логическим значением из iframe, когда пользователь выходит из системы.
{'logout':true}
- Отправка объекта с логическим значением и html-строкой из iframe, когда пользователь нажимает кнопку печати.
{'print':true, 'html':htmlString}
- Отправьте зашифрованную полезную нагрузку в iframe, затем дождитесь, пока iframe вернет объект.
{'success':true}