我的Cordova移动应用程序使用iframe来加载网站。我想使用postMessage()
通过iframe发送和接收内容。但是,通过我的测试,我的移动应用源始终是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
});
如果有帮助,我正在做的事情是:
{'loaded':true}
{'logout':true}
{'print':true, 'html':htmlString}
{'success':true}
答案 0 :(得分:0)
使用postMessage发送数据时,您可以通过在原始URL中指定https:// ...来加密通信。
使用这种过程是跨站点脚本编写的大门,您应该在Web应用程序和移动端上验证主叫方和被叫方。此处提供有关postMessage的更多规范(以及有关威胁的有用注意事项): https://developer.mozilla.org/fr/docs/Web/API/Window/postMessage
对于身份验证,您必须在传输的数据中进行身份验证(使用手机用户手动提供的内容,否则不会进行任何身份验证)。
要从cordova读取数据,您应该使用针对Web服务器上的服务的AJAX请求。