web-dev-qa-db-ja.com

Cordova 6.1アプリがWebサイトからiOSにiframeを埋め込むことを許可するにはどうすればよいですか?

最近作成するまで、私のCordovaアプリはWebサイトのiframeをうまく埋め込むことができました。今、おそらく忘れていたアップデートの後、アプリをビルドするとiOSでiframeが空白になりますが、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:モバイルサファリの問題のようです。ネットワーク経由でファイルを表示していますが、Cordovaの外でもファイルが正しく読み込まれていません。少なくとも数日前にはこれが機能していたことを確認できます。

11
Phil Barresi

@フィル、
whitelistプラグインのアプリケーションは閉じていますが、index.htmlにjavascriptがあるために失敗する可能性があります。 CSPは多くの開発者を止めました。最も簡単なことは、すべてのJavascriptとCSSを独自の個別のファイルに移動することです。

それとは別に、ここに広く適用されているソリューションがあります:

補足説明として、 Cordova Tools 5.0. (2015年4月21日)以降、whitelistシステムが必要です。 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 -->

APP ISに注意してください。 IT ISアプリを保護するのはあなた次第です。
次を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';">

APP ISに注意してください。 IT ISアプリを保護するのはあなた次第です。
これホワイトリストワークシートが役立ちます。
ホワイトリストシステムにCordova/Phonegapを適用する方法

22
JesseMonroy650