CosenseのUserScriptでCSPを回避する
課題: CosenseのCSPには以下の制約がある
localhost は含まれていない
fetch('http://localhost:3456/...') はブロックされる
code:_
script-src 'self' cdnjs.cloudflare.com maps.googleapis.com 'unsafe-eval' ...
<script> タグのインライン実行はブロックされる
eval() は許可されている
解決策: Tampermonkeyを使う
必須ヘッダ
code:_
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @connect localhost
// @run-at document-idle
@grant unsafeWindow が必須
@grant GM_xmlhttpRequest を指定するとサンドボックスが有効になり、ページの scrapbox オブジェクトに直接アクセスできなくなる
例えばunsafeWindow.scrapbox.PopupMenu でPopupMenu APIにアクセスできる