Web Analytics Made Easy -
StatCounter

メモ・備忘録(設定ファイル・スクリプト類・ブックマーク)

数年後の自分が首を捻らなくて済むようにするために残す、自分で使うためのアプリの設定やスクリプト類のメモ。改変等ご自由に / 内容が古いまま、間違ったままもあるので注意 / 書いている途中や、途中で放置もあり / 対象の仕様変更で動かなくなったもの多々。特に、WorkFlowyを対象として作ったものは全滅。

Dynalistでツイートを表示するtampermonkeyスクリプトはScrapboxには応用できなさそう

Dynalistに書き込まれたツイートのURLを元に、ツイートを表示してくれるtampermonkeyスクリプト talk.dynalist.io の中の、

// @match        https://dynalist.io/d/*

の部分を

// @match        https://scrapbox.io/*/*

に変えてScrapboxで試してみたが、コンソールを見ると、

Refused to load the script 'https://platform.twitter.com/widgets.js' because it violates the following Content Security Policy directive: "script-src 'self' cdnjs.cloudflare.com www.google-analytics.com maps.googleapis.com helpfeel-tweaks.helpfeel.com 'unsafe-eval' js.stripe.com". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

と、コンテンツセキュリティポリシーに違反しているという理由で、Twitterのscript(https://platform.twitter.com/widgets.js)の読み込みが拒否されてエラーとなって動かない。Scrapboxに合わせて書き換えるとかいう以前の問題のようである。


developer.mozilla.org


Dynalistの場合、
Chromeのtampermonkey拡張にこのスクリプトを導入して最初に動かすと、「ユーザースクリプトがクロスオリジンリソースにアクセスしようとしています。」と、許可を求める画面が表示される。しかし、許可すれば無事に動いてくれる。

Dynalistはコンテンツセキュリティポリシーを<meta>要素を用いて指定している模様で、

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'; media-src *; img-src * filesystem: data:">

と、script-srcだけでなく殆どが*となっている。どこもかも参照し放題ってこと?


一方Scrapboxは、
Content-Security-Policy HTTP ヘッダで指定している模様で、それは、

Content-Security-Policy: connect-src 'self' i.gyazo.com wss://scrapbox.io https://upload.gyazo.com https://gyazo.com https://storage.googleapis.com https://sentry.io; default-src 'self'; font-src 'self' cdnjs.cloudflare.com fonts.gstatic.com; frame-src 'self' www.google.com www.youtube.com player.vimeo.com js.stripe.com; img-src * data: blob:; media-src *; script-src 'self' cdnjs.cloudflare.com www.google-analytics.com maps.googleapis.com helpfeel-tweaks.helpfeel.com 'unsafe-eval' js.stripe.com; style-src 'self' fonts.googleapis.com cdnjs.cloudflare.com 'unsafe-inline'; worker-src 'self'; form-action 'self'; upgrade-insecure-requests

となっており、script-srcの部分だけ見ても、 script-src 'self' cdnjs.cloudflare.com www.google-analytics.com maps.googleapis.com helpfeel-tweaks.helpfeel.com 'unsafe-eval' js.stripe.com; となっている。しっかり参照先を限定しているってこと?



なんであれ、この方法では無理そうだ。