

[前回の質問](https://ja.stackoverflow.com/questions/35350/angularjs-
cdvfile-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB%E3%81%A7%E3%83%90%E3%82%A4%E3%83%B3%E3%83%89%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%84?noredirect=1#comment35108_35350)にて、cdvfileプロトコルを使いたいという事で一旦自己解決したのですが、これをAndroidで使おうとした際、別のエラーとなりました。  
Monacaにある例のどおり、

[code]

    <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap:cdvfile:https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
    
[/code]

こちらを指定すると、

> The source list for Content Security Policy directive 'default-src'  
>  contains an invalid source: 'gap:cdvfile:<https://ssl.gstatic.com>'. It  
>  will be ignored.

このようなエラーが出ます。

次に、前回の解決策のように、スペースを消してみました。

[code]

    <meta http-equiv="Content-Security-Policy" content="default-src'self' data: gap:cdvfile:https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
    
[/code]

そうすると、次のようなエラーが出て、認識できなくなりました。

> Unrecognized Content-Security-Policy directive 'default-src'self''.

こちらも色々調べてみましたが、解決出来ない為、詳しい方、お力添えをお願いします。


CC BY-SA 3.0
2017-06-28T04:41:40.867
35926
2017-06-29T01:42:03.673
19752
question
javascript monaca angularjs
セキュリティポリシーが動作しない


おそらくMonacaの[このページ](https://docs.monaca.io/ja/reference/cordova_6.2/file/#cdvfile-
protocol)のドキュメントを参考にされたものとして回答します。  
ドキュメントの以下の部分の記載が間違っています。

[code]

    誤：gap:cdvfile:https://ssl.gstatic.com
    正：gap: cdvfile: https://ssl.gstatic.com
    
[/code]

Content Security
Policyについては[このページ](https://developer.mozilla.org/ja/docs/Web/Security/CSP/CSP_policy_directives)などを参考にされると良いかと思います。  
簡単に説明すると`default-src`ディレクティブに対して`source-list`を指定します。  
この`source-list`に指定する形式として、以下があります。

  * http形式のURI
  * 特定のキーワード（`'none'`/`'self'`/`'unsafe-inline'`など）
  * `Data`形式（`data:`/`blob:`/`filesystem:`など)

エラー内容は「`default-
src`ディレクティブに含まれる`gap:cdvfile:https://ssl.gstatic.com`は不正です。」と説明しています。  
つまり`gap:cdvfile:https://ssl.gstatic.com`という一連の文字列は、`source-
list`に指定する形式として不正ということです。

前述の通り、`gap:` `cdvfile:`
`https://ssl.gstatic.com`をそれぞれ個別に指定することでエラーは発生しなくなると思います。

* * *

補足

２個目のエラーについてもエラー内容の通りです。  
Content Security Policyには`default-src`ディレクティブはありますが、`default-
src'self'`ディレクティブはありません。


CC BY-SA 3.0
2017-06-29T01:07:04.037
35946
2017-06-29T01:42:03.673
2017-06-29T01:42:03.673
20272
20272
35926
answer