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に合わせて書き換えるとかいう以前の問題のようである。
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;
となっている。しっかり参照先を限定しているってこと?
なんであれ、この方法では無理そうだ。