多くの異なる試行錯誤とアプローチを経て、プラグインで使用するためにサードパーティライブラリを正常にロードすることに成功しました。
ライブラリは public/javascripts/some-library.js の下にあります。
コントローラーでは、次の方法でスクリプトを正常にロードできます。
loadScript("/plugins/my-plugin/javascripts/some-library.js")
そのファイル内で、ライブラリがBlobを作成し、それらが使用される変数に割り当てることがあります。例:
var A=URL.createObjectURL(new Blob(['\n\tsome code snippet...],{type:"application/javascript"}))
そして、プラグインコードでライブラリを使用しようとすると、次のエラーが発生します。
Refused to load the script 'blob:http://localhost:4200/f33a6788-a853-4286-883a-48cb8e2c9cc1' because it violates the following Content Security Policy directive: "script-src http://localhost:4200/assets/ etc etc...
これを回避するための最良の方法は何でしょうか?
ご協力とヒントをいただければ幸いです!
「いいね!」 1
Firepup650
(Firepup Sixfifty)
2023 年 7 月 13 日午前 4:33
2
http://localhost:4200 を CSP に追加するだけではどうでしょうか?
それは試してみたのですが、何も変わりませんでした。
Firepup650
(Firepup Sixfifty)
2023 年 7 月 13 日午前 4:59
4
blob:http://localhost:4200 についてはどうですか?
それも試しましたが、CSP の無効なステートメントです
これを見つけた人のために、csp script srcに追加する正しい行は blob: です。
待ってください!開発中にCSPを実装する必要はありません。攻撃者のリスクはありませんか?
また、一部の開発者ツールがブロックされる可能性もあります。
この設定をオフにするだけです。
簡単です。
動作するプラグインを本番ステージングサーバーでテストできるようになるまで、この頭痛の種は延期してください。
まさに本番環境の準備段階だったので、これは解決すべき最後の頭痛の種でした。それに、これらのことを延期するのは好きではありません。特に、それが潜在的な取引妨害要因になるかどうかを突き止め、まったく別の道を見つける必要がある場合はなおさらです
はい、しかし、実際のインターネットアドレスを持つ本番ステージングサーバーのCSP設定に取り組むべきです。
localhostはインターネットアドレスではありません! httpsでもありません…
system
(system)
クローズされました:
2023 年 8 月 14 日午前 6:56
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.