[Chrome Extension] Trelloのclient.jsを設定すると「Refused to load the script」が出た

javascript触り始めていろいろ躓いているメモです。

スポンサーリンク

Trelloのclient.jsが動かない

Chrome拡張を作っていて、client.jsを使いたくなったのでGetting Started with client.jsに沿って設定したら以下のエラーが出ました。

Refused to load the script 'https://api.trello.com/1/client.js?key=xxx' because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem:". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

(keyは伏せてます)

原因

パッケージ外のファイルへアクセスする場合はmanifest.jsonにcontent_security_policyを設定する必要があります。
今回はスクリプトから「https://api.trello.com」へのアクセスしようとしたため、エラーになっていました。
XSSなどの攻撃への対策のようです。

対応

manifest.jsonにセキュリティポリシーを設定することで、指定したドメインへのアクセスを許可します。
ここでは以下を追加しました。

"content_security_policy": "script-src 'self' https://api.trello.com; object-src 'self'"

参考

MDN web docs – content_security_policy

おしまい。

スポンサーリンク