2012年9月10日月曜日

Chromeアプリケーションのマニフェストのバージョン2で外部参照

先日書きましたが、
Chromeアプリケーションのmanifest.jsonがvarsion2となり、
version1が廃止の方向に突き進んでいます。
私はイノベーションは大好きですが、
マネジメントやセキュリティはクソ食らえというタイプなので、
バージョンが上がったことによるセキュリティ強化は気に入りはしませんが、
他に選択肢があるわけでもなく受け入れざるを得ません。

最近ではJavaScriptをより便利に使うためにライブラリを利用するのが一般的ですが、
もっとも多く使われているのはjQueryではないでしょうか。
このライブラリを使う準備は、HTMLファイルに
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
を追加するだけなのですが、
のマニフェストのversion2では
標準では外部スクリプトの参照ができず、
セキュリティ的なお手本としては、HTMLファイルには
<script type="text/javascript" src="jquery.min.js"></script>
を追加して、そのHTMLと同じディレクトリに、
"http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"をダウンロードした
ファイル"jquery.min.js"を置くということになります。
jQuerryであれば、アプリケーションのファイルサイズが大きくなることを除けば、
この方法でなんら問題ありませんし、
先のURLの内容が改ざんされてもローカルには影響が及ばず、
むしろふさわしいといえるでしょう。

しかし、ライブラリでは気付かない間にバグ修正やなされることもあれば、
そのホストしているサーバにアクセスすること自体に意義がある場合もあり、
どうしても外部参照をしたい場合があります。
そういう時は以下のように回避できます。

version2では"manifest.json"の先頭は
{
  "manifest_version": 2,
のようになりますが、このときデフォルトでcontent_security_policyは
  "content_security_policy": "script-src 'self'; object-src 'self'",
と設定されます。
そこで、
{
  "manifest_version": 2,
  "content_security_policy": "script-src 'self' http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js; object-src 'self'",
のように書いて、HTMLファイルには
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
と記述すれば、外部のスクリプトも参照できます。

0 件のコメント:

コメントを投稿