JM-*_*GMS 14 iframe postmessage cordova
我的Cordova移动应用程序使用iframe加载网站.我想通过iframe发送和接收内容postMessage().但是,通过我的测试我的移动应用程序来源总是localhost:8000或file://.本网站上的每个其他示例都使用一个独特的域名和来源(例如www.example.com),但我的起源显然不是唯一的.
如果我的来源是localhost:8000/ file://?如何保护我的移动应用程序和我的网站之间的通信?如果由于某种原因我不能,我可以使用访问令牌来验证如下所示的任何通信吗?
移动应用
var iframe = document.getElementById('iframe');
var data = {
'access_token': 'whatever'
};
iframe.contentWindow.postMessage(data, 'localhost:8000');
Run Code Online (Sandbox Code Playgroud)
website.com
window.addEventListener('message', function(event) {
if (!event.data || !event.data.access_token) {return;}
// ajax request to validate the token here
});
Run Code Online (Sandbox Code Playgroud)
如果它有帮助,我正在做的事情是:
{'loaded':true}{'logout':true}{'print':true, 'html':htmlString}{'success':true}小智 0
使用 postMessage 发送数据时,您可以通过在原始 URL 中指定 https://... 来加密通信。
使用这种程序是跨站点脚本的大门,您应该在 Web 应用程序和移动端验证调用者和被调用者。有关 postMessage 的更多规范(以及有关威胁的有用考虑因素): https: //developer.mozilla.org/fr/docs/Web/API/Window/postMessage
对于身份验证,您必须将身份验证放入传输的数据中(使用手机用户手动提供的内容,否则它不会验证任何内容)。
要从 cordova 读取数据,您应该使用针对 Web 服务器上的服务的 AJAX 请求。