我有一个离子5 Cordova 9应用程序,需要以下行为:
上面的代码在ionic和Cordova CLI自动生成的config.xml和index.html上在Android上运行良好。当我将代码携带到iOS上时,我必须同时更改config.xml和index.html才能在iframe中获取内容:更改之后,Config.xml具有这些相关条目
<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />
我将以下内容添加到index.html
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; child-src *">
经过上述更改后,我在iframe中获得了横幅,但是当我单击横幅时,什么也没有发生。 Safari显示未生成任何网络请求。如前所述,我无法控制iframe的内容,因此无法使用InAppBrowser或类似的解决方案。
我还尝试卸载cordova-plugin-whitelist,因为在iOS上不需要这样做,但这没有任何区别。目前,我不担心加强安全性。我想先使其工作。我研究了Cordova白名单指南,并研究了关于堆栈溢出的所有相关问题,但是没有找到任何解决方案。我需要专家的指导。
除了iframe中的超链接之外,我还直接在页面上创建了超链接。经过几次观察,我可以将<allow-navigation>
隔离为config.xml
的标签,这对这个问题有所不同。
[当我从<allow-navigation href="*" />
中删除config.xml
标签时,页面上的超链接有效,但未填充iframe内容。
并且当我带回<allow-navigation href="*" />
标记时,现在已填充iframe,但是该页面和iframe中的超链接不起作用。
这暗示着我在中间需要一些东西。
然后我将标签更改为此<allow-navigation href="*://*.iframeContentDomain.com/*" />
,并从页面和iframe还原了iframe内容和工作超链接。