概要
先日、公開していた Chrome 拡張の半数が急にウェブストアで見えなくなるという憂き目に遭いました。
(具体的にはウェブストアの該当ページが真っ白になってて、新規に拡張を追加してもらえなくなってた。)
この原因がわかったため回避できたのですが、Google側の問題自体はいまだ解決していないため、同様に困っている人もいるだろうと思い、共有することにしました。
結論
Chrome は拡張名に customize
という文字を使ってはいけません。
もし既に使っていて、画面が真っ白になっているなら、名前を変えれば解決です。
(URL に名前が入っているため、URL が変わります。ご注意ください。)
何が起こっているのか
Chrome 拡張のページの URL 文字列の中に customize
という文字列がどこであれ入っていると、ページが真っ白になります。
具体的には下記の JavaScript エラーが発生していてページの表示に失敗してます。
Refused to load the script 'https://chrome.google.com/webstore/polymer/cc_store_app/(中略)/cc_store_app.html' because it violates the following Content Security Policy directive: "script-src 'report-sample' 'nonce-(中略)' 'unsafe-inline' 'strict-dynamic' https: http: 'unsafe-eval'". 'strict-dynamic' is present, so host-based whitelisting is disabled.
内部的なページの HTML も微妙に変化します。
想像ですが、customize という隠しコマンドか何かが最近仕込まれて、それに反応して特別なページになるが、特別な環境でないとエラーが出てしまうのではないか。よく解りませんが。
簡単な再現方法
興味がありましたら拡張のページの末尾に ?customize
をつけてみてください。
真っ白の画面をみることができます。
(ちなみにスマホから見た場合は正常に表示されます。)
↓サンプル (大丈夫な方)
https://chrome.google.com/webstore/detail/pre-sending-checker-for-g/amfjacgcdefoiliginkjnebdamdomeig
↓サンプル (真っ白になる方)
https://chrome.google.com/webstore/detail/pre-sending-checker-for-g/amfjacgcdefoiliginkjnebdamdomeig?customize
最後に告知
2017-08-05(土) に builderscon tokyo というイベントで 「Chrome拡張を使って様々なWebサービスをハックする」 というネタで登壇します。
https://builderscon.io/tokyo/2017/session/9e8711fb-7f56-44ea-b550-0d48ff756e1d
ご興味ある方がいらっしゃいましたら、ぜひとも聞きにきてください。