新しい Discourse をセットアップし、別のサイトのページにコメントを埋め込もうとしています。
Safari で実行すると、JavaScript コンソールに以下のエラーが表示されます。
Unrecognized Content-Security-Policy directive 'worker-src'.
埋め込みページは約 30 秒間「Loading discussion…」と表示されたままになります。
その後、コンソールに以下が表示されます。
Unrecognized Content-Security-Policy directive 'worker-src'.
Unrecognized Content-Security-Policy directive 'worker-src'.
Unable to post message to https://forum.nsscreencast.com. Recipient has origin https://nsscreencast.com.
これは、コンテンツが読み込まれた後に iframe を自動的にサイズ調整するためのものだと推測されます。Chromium ベースのブラウザで実行すると、このエラーは発生しません。
Safari でこの postMessage フローを動作させるために、何か設定が必要でしょうか?
Falco
(Falco)
2021 年 6 月 1 日午後 6:00
2
これは近々修正する予定です。埋め込みリクエストの許可確認にはリファラーに依存していますが、ブラウザの最近の変更により、この分野における多くの前提が崩れてしまいました。
素早い返信ありがとうございます。その間、これを回避するために何かできることはありますか?つまり、埋め込みサイトにカスタム JS を実装するなどは可能でしょうか?
Falco
(Falco)
2021 年 6 月 1 日午後 6:23
4
/admin/customize/embedding の設定とは何ですか?
かなりシンプルに見えますね…
動作はしていますが、最初の投稿の読み込みに時間がかかり、自身で更新されないことが多いようです。その後、「ディスカッションを開始」や実際の返信が表示されます。
設定:
ユーザー名: benscheirman
埋め込む最大投稿数: 100
タイトルから削除する正規表現: “- NSScreencast$”
切り捨て: はい
インポートされたトピックは返信があるまで非公開: いいえ
Falco
(Falco)
2021 年 6 月 1 日午後 6:44
6
それは私たちが抱えている正確なバグです。これは、CSP を有効化するために Extract inline JS on embedded comments by xrav3nz · Pull Request #6645 · discourse/discourse · GitHub で導入せざるを得なかった、head 内のタグを使った iFrame でのリフレッシュをブラウザがどのように処理するかに関する、奇妙な動作に起因しています。
そのため、コメント付きのブログ記事に最初にアクセスする人は、埋め込みを表示するために手動でリフレッシュする必要があります。その後のアクセスでは問題なく動作します。すでに修正案は用意しており、数週間以内にマージする予定です。
この件についてフォローアップさせてください。この修正はマージされましたでしょうか?もしまだであれば、追跡できるようPRのリンクをここに貼っていただけますか?