如何为 Cordova Ios/Windows Phone/Android 正确设置“内容安全策略”?

Posted

技术标签:

【中文标题】如何为 Cordova Ios/Windows Phone/Android 正确设置“内容安全策略”?【英文标题】:How to set properly "content-security-policy" for Cordova Ios/Windows Phone/Android? 【发布时间】:2016-08-02 15:49:19 【问题描述】:

我正在为我们公司构建一个应用程序。我们有一个 iframe(不要问为什么......)加载一个响应式网站。它(应该)对用户透明。

我添加了几行js来管理离线页面。

它在 android 模拟器(带有 Visual Studio 的 cordova)和 android 设备上运行良好。但是我面临一个content-security-policy,我怀疑它是这个错误的来源:

deviceready 在 5 秒后没有触发

根据我的阅读,它可能来自内容安全政策。

我在运行时遇到了这个错误:

拒绝加载框架“gap://ready”,因为它违反了以下规定 内容安全策略指令:“default-src 'self' https://www.mywebsite.fr http://www.mywebsite.fr"。注意'frame-src' 没有明确设置,所以 'default-src' 被用作后备。

你如何看待这个元数据:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' https://www.mywebsite.fr http:///www.mywebsite.fr; child-src 'self' https:///www.mywebsite.fr http:///www.mywebsite.fr; script-src 'self' https:///www.mywebsite.fr http:///www.mywebsite.fr; 
         gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

还有我的 config.xml:

  <access origin="https:///www.mywebsite.fr" />
<access origin="http:///www.mywebsite.fr" />

感谢您的宝贵时间,

斯蒂夫。

【问题讨论】:

您是否尝试删除您的内容安全策略并查看错误是否仍然存在? 是的:有或没有相同的错误。 (我编辑了我的帖子) 【参考方案1】:

CSP 错误为您提供了所有详细信息。您没有指定“frame-src”指令,因此它会退回到“default-src”,它不会将空白列入白名单:协议。

你有两个选择:

1) 将gap: 添加到您的'default-src'。

2) 添加一个“frame-src”指令并在其中添加gap:

如果您选择 2,您可能还需要添加 'child-src' 指令以便将来兼容与 'frame-src' 相同的值。

【讨论】:

以上是关于如何为 Cordova Ios/Windows Phone/Android 正确设置“内容安全策略”?的主要内容,如果未能解决你的问题,请参考以下文章

如何为多平台phonegap/cordova开发组织代码

如何为 react.cordova、ionic 和 android 设置 ssl 证书?

Apache cordova - 如何为 Google Play 或 Itunes 打开本机应用程序?

如何为 Cordova CLI 启动和运行 github/ios-deploy-master?

cordova:事件Events

如何为特定令牌设置静默通知?