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

问题描述 投票:0回答:1

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

ios cordova ionic-framework iframe whitelist
1个回答
0
投票

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

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

并且当我带回<allow-navigation href="*" />标记时,现在已填充iframe,但是该页面和iframe中的超链接不起作用。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.