こんにちは。
投稿内で管理者のみが実行できるスクリプトを実行する方法はありますか?
以前、PuTTYでサイトをクラッシュさせたときに設定を試みましたが、うまくいきませんでした。
良い水曜日を
オッレ
こんにちは。
投稿内で管理者のみが実行できるスクリプトを実行する方法はありますか?
以前、PuTTYでサイトをクラッシュさせたときに設定を試みましたが、うまくいきませんでした。
良い水曜日を
オッレ
数年前にこの件に関する投稿がありましたが、可能かどうか希望しています。
https://meta.discourse.org/t/adding-a-javascript-in-a-post/130019/3
Olle
@Olle11 達成しようとしていることをもう少し詳しく説明していただけると役立つかもしれません。
Composer を介してアドホックにこれを許可する方法はありませんが、ユースケースによっては回避策がある可能性があります。
たとえば、Poll プラグインは基本的に投稿内で (他のこととともに) JavaScript を実行します。
HTMLまたはReactでスクリプトを実行し、トップ投稿にウィジェットをライブ表示させたいと考えています。
例えば、HTMLウィジェットスクリプトを通じて都市のライブ天気を示すウィジェットなどです。
この場合、Pollプラグインは利用可能でしょうか?
よろしくお願いいたします。
Olle
いいえ、それはただの例として使っただけです。そのソースコードを見てください。
もしJavaScriptを他の場所にホストできるなら、iFrameを使ってみることもできます。
より密接な統合を望むなら、EmberJSの使用を検討する必要があります。
これは、例えば一番上にバナーを置くのではなく、投稿内にコンテンツを表示したい場合に、最もアクセスしやすい回答かもしれません。
例えば、CodePenのフロントページにあるアイテムの1つ(allowed_iframesに含まれているため)を選んで、以下に埋め込んでみました。
スクリプトに必要なiframeがX-FRAME-Options: DENYのため許可されないようです。
Discourse で実行されるスクリプトを許可するために、これらの線に沿った何かが必要かもしれません @merefield @supermathie?
App.yml:
DISCOURSE_ALLOW_UNSAFE_HTML: true
CSP の Nginx 設定:
add_header Content-Security-Policy “script-src ‘self’ ‘https://webadress.com’ ‘unsafe-inline’ ‘unsafe-eval’;”
curl で CSP を確認したところ、‘unsafe-inline’ と https の両方が表示されません。Nginx 設定を追加しようとしています。‘unsafe-eval’ は管理者を通じて追加されます。
編集: 安全ではありません
これを防ぐためにDiscourseが設置している保護措置を削除するのはひどいアイデアです。
だからこそ、皆さんはこの方法を推奨されるやり方に誘導しようとしています。
テーマやテーマコンポーネントを使用してページにスクリプトを追加するべきです。
投稿にスクリプトを追加するためにテーマまたはテーマコンポーネントを使用できますか?
スクリプトを機能させるために CSP に ‘unsafe-inline’ を含めるにはどうすればよいですか?
できます。スクリプト自体は投稿の外に配置するか、投稿の特定の側面を装飾するようにすることができます。
具体的に何が必要か分からないと、正確には分かりません。
これは悪い考えであり、行うべきではありません。
CSPに関して、app.ymlに追加した内容についてですが、安全ではないため、unsafe_html: true、nginxボリューム、およびサイトのCSP用nginx設定を削除します。
テーマコンポーネントでうまくいくかもしれません。
具体的にどのスクリプトを実行したいですか?
どこで実行したいですか?
特定の投稿で実行しますか? それともページ内の他の場所ですか? どのようなパラメータを渡す必要がありますか? 投稿ごとに異なりますか? カテゴリですか?
iframeは動作するかもしれません。私はサイトの安全性を保つために、CSPとunsafe_htmlを更新する必要があります。なぜなら、私が試したCSPや他の解決策は安全ではないからです。
入力ありがとうございます。Iframe は、より良い解決策を見つけるまでの間、少なくとも現時点では機能するかもしれません。
スクリプトを見ると、グローバルに実行することはできません。オプション付きでプレースにロードする必要があります。
簡単なTCを作成しました: GitHub - Arkshine/discourse-tradingview-chart
オプションを簡単に変更するには、サイトから直接 [wrap]..[/wrap] の中にコピー&ペーストできます。
デフォルトでは、アスペクト比は16/9に強制され、すべての幅を使用し、高さは自動になります。スクリプトでは幅/高さを指定することもでき、それも機能します。
show_popup_button: true オプションの使用をお勧めします。これにより、新しいウィンドウでチャートをフルスクリーンで表示する方法が提供されます。

2つのオプションを追加しました。
申し訳ありませんが、
だけでは伝えきれません。
すごいですね。