【问题标题】:How can I allow a Cordova 6.1 app to embed an iframe in iOS from a website?如何允许 Cordova 6.1 应用程序从网站在 iOS 中嵌入 iframe?
【发布时间】:2016-07-19 00:12:31
【问题描述】:

在我最近构建之前,我的 cordova 应用程序能够很好地嵌入网站的 iframe;现在,大概是在我忘记了更新之后,构建应用程序导致 iframe 在 iOS 上为空白,但在 Android 上有效。

我在 config.xml 中添加了以下设置:

<access origin="*"/> <access origin="*.pushwoosh.com" /> <access origin="*.hoby.org" /> <allow-navigation href="*" /> <allow-intent href="*" />

以及以下内容安全政策:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

这应该允许基本上一切。我使用 cordova 6.1.0 和 Ionic 1.7.14 添加了 cordova-whitelist 插件

编辑:它实际上可以在 iOS 模拟器上运行,但在我在设备上运行时却不行。

编辑 2:看起来可能是移动 safari 问题;我正在通过我的网络查看文件,即使在 Cordova 之外,它们也无法正确加载。我可以确认这至少在几天前是有效的。

【问题讨论】:

  • 你知道Phonegap不是webserver or a webbrowser吗?你知道Google and Apple frown on apps 都是网站包装器吗?
  • 我知道它不是网络服务器或浏览器;我知道他们不赞成。然而,客户的需求往往并不特别符合现实。
  • 好的。确保你先拿到钱,因为你可能不会进入应用程序“商店”。一会儿你就会有答案了。祝你好运。
  • 请注意,部分答案将供以后阅读本文的人使用。

标签: ios cordova iframe ionic-framework mobile-safari


【解决方案1】:

whitelist 插件的应用程序已关闭,但可能会失败,因为您的 index.html 中有 javascript。 CSP 已经阻止了许多开发人员。最简单的做法是将所有 Javascript 和 CSS 移动到各自单独的文件中。

简而言之,这是一个广泛应用的解决方案:

附带说明,whitelist 系统自 Cordova Tools 5.0.0(2015 年 4 月 21 日)起是必需的。对于Phonegap Build,这意味着从cli-5.1.1(2015 年 6 月 16 日)开始

将此添加到您的config.xml

<plugin name="cordova-plugin-whitelist"      source="npm" spec="1.1.0" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" /> <!-- Required for iOS9 -->

请注意,您的应用现在不安全。保护您的应用程序由您决定。
将以下内容添加到您的 index.html

<meta http-equiv="Content-Security-Policy" 
         content="default-src *; 
                  style-src * 'self' 'unsafe-inline' 'unsafe-eval'; 
                  script-src * 'self' 'unsafe-inline' 'unsafe-eval';">

请注意,您的应用现在不安全。保护您的应用程序由您决定。
白名单工作表应该会有所帮助。
HOW TO apply the Cordova/Phonegap the whitelist system

【讨论】:

  • “请注意您的应用程序现在不安全”。你能解释一下到底遇到了什么安全风险吗?
  • 老实说,我完全不明白你为什么这么粗鲁......是的,我对 Cordova 应用程序的安全性不是很有经验......然后呢?我不配变得更好?也许糟​​糕的程序员太自豪而不愿分享自己的知识……
  • 我认为他是在恳请您阅读他发布的链接 HOW TO:阅读将为您提供所需的所有答案
  • @IanWarner 真正的答案是它与原始问题无关。所以它不值得回答。把这个问题跑题是不受欢迎的,应该强烈劝阻。需要明确的是,这不仅仅是在 Stackoverflow 上,而是在所有问答论坛上。我不会评论所表明的懒惰。
  • @IanWarner 这是试图让问题偏离主题。如您所见,我的个人资料得分不错。不回答问题,我仍然每月获得一百左右的积分。我相信这是因为我拒绝让这个问题跑题。这不简单。有时你必须粗鲁。
猜你喜欢
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2011-11-17
  • 2011-08-25
  • 2021-04-01
  • 2021-05-08
  • 2016-10-17
  • 1970-01-01
相关资源
最近更新 更多