在Ionic Cordova应用程序中,iframe中跨源内容中的外部超链接在Android上有效,但在iOS上不起作用

我有一个离子5 Cordova 9应用,该应用需要以下行为:

  1. 它应在此应用程序中加载由跨源Web服务提供的图像横幅,很明显是在iframe中。
  2. 图像横幅具有超链接,一旦单击,系统浏览器应转到另一个交叉来源的网页。

以上内容在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白名单指南,并研究了关于堆栈溢出的所有相关问题,但是没有找到任何解决方案。我需要专家的指导。

yaoji2011 回答:在Ionic Cordova应用程序中,iframe中跨源内容中的外部超链接在Android上有效,但在iOS上不起作用

除了iframe中的超链接外,我还直接在页面上创建了超链接。经过几次观察后,我可以将<allow-navigation>隔离为config.xml的标签,这对这个问题有所不同。

当我从<allow-navigation href="*" />删除config.xml标记时,页面上的超链接有效,但未填充iframe内容。

,当我带回<allow-navigation href="*" />标记时,现在已填充iframe,但是页面和iframe中的超链接却无法正常工作。

这暗示我中间需要一些东西。

然后我将标签更改为此<allow-navigation href="*://*.iframeContentDomain.com/*" />,并从页面和iframe恢复了iframe内容和有效的超链接。

本文链接:https://www.f2er.com/3146658.html

大家都在问