私のシステムでCordova 5.0をアップデートした後、私は新しいアプリケーションを作成します。そのときにデバイスでアプリケーションをテストしたときに、コンソールログにエラーが表示されます。
No Content-Security-Policy meta tag found.
Please add one when using the Cordova-plugin-whitelist plugin.: 23.
Headセクションにmetaを追加
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'>
しかし、繰り返しますが、私は同じエラーを私はアプリ内ブラウザプラグインと他の7つのウェブサイトリンクの7つを使用しているアプリケーションで得ました。
cordova-plugin-whitelist を追加した後、特定のものにしたい場合は、すべてのWebページリンクまたは特定のリンクへのアクセスを許可するようにアプリケーションに指示する必要があります。
アプリケーションのルートディレクトリにあるconfig.xmlにこれを追加するだけです。
ドキュメントの中で推奨されている:
<allow-navigation href="http://example.com/*" />
または
<allow-navigation href="http://*/*" />
プラグインのドキュメントから:
ナビゲーションホワイトリスト
WebView自体がどのURLに移動できるかを制御します。最上位のナビゲーションにのみ適用されます。
癖:Androidでは、http以外の方式のiframeにも適用されます。
デフォルトでは、file:// URLへのナビゲーションのみが許可されています。他のURLを許可するには、config.xmlにタグを追加する必要があります。
<!-- Allow links to example.com --> <allow-navigation href="http://example.com/*" /> <!-- Wildcards are allowed for the protocol, as a prefix to the Host, or as a suffix to the path --> <allow-navigation href="*://*.example.com/*" /> <!-- A wildcard can be used to whitelist the entire network, over HTTP and HTTPS. *NOT RECOMMENDED* --> <allow-navigation href="*" /> <!-- The above is equivalent to these three declarations --> <allow-navigation href="http://*/*" /> <allow-navigation href="https://*/*" /> <allow-navigation href="data:*" />
アプリのindex.html
のheadセクションにCSPメタタグを追加する必要があります。
ように https://github.com/Apache/cordova-plugin-whitelist#content-security-policy
コンテンツセキュリティポリシー
どのネットワーク要求(画像、XHRなど)を許可するかを(直接Webビュー経由で)制御します。
AndroidおよびiOSでは、ネットワークリクエストホワイトリスト(上記を参照)はすべてのタイプのリクエストをフィルタリングすることはできません(例:
<video>
&WebSocketsはブロックされません)。そのため、ホワイトリストに加えて、すべてのページで コンテンツセキュリティポリシー<meta>
タグを使用する必要があります。Androidでは、システムWebビュー内のCSPのサポートはKitKatから始まります(ただし、Crosswalk WebViewを使用するすべてのバージョンで利用可能です)。
.html
ページに対するCSP宣言の例をいくつか示します。<!-- Good default declaration: * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly * Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this: * Enable inline JS: add 'unsafe-inline' to default-src * Enable eval(): add 'unsafe-eval' to default-src --> <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *"> <!-- Allow requests to foo.com --> <meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com"> <!-- Enable all requests, inline styles, and eval() --> <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> <!-- Allow XHRs via https only --> <meta http-equiv="Content-Security-Policy" content="default-src 'self' https:"> <!-- Allow iframe to https://cordova.Apache.org/ --> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.Apache.org">
メタタグにエラーがあります。
あなたのもの
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'>
修正済み
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>
"script-src"の後のコロンと、メタタグの最後の二重引用符に注意してください。
私にとってはホワイトリストプラグインを再インストールすれば十分でした。
cordova plugin remove cordova-plugin-whitelist
その後
cordova plugin add cordova-plugin-whitelist
Cordovaの以前のバージョンからのアップデートは成功しなかったようです。
私にとって問題なのは、廃止されたバージョンのcordovaAndroidおよびiosプラットフォームを使用していたことです。そのため、[email protected]および[email protected]にアップグレードすると解決しました。
これらの特定のバージョンにアップグレードできます。
cordova platforms rm Android
cordova platforms add [email protected]
cordova platforms rm ios
cordova platforms add [email protected]