こんにちは、皆さん。
JavaScript を通して Discourse のコメントを埋め込もうとしたところ、ブラウザのコンソールから以下のエラーが表示されました。
comments ファイルの 1 行目からの 1 つ目のエラー
Failed to load resource: the server responded with a status of 400 ()
embed-application-08a52625979d3d44aac8a2dedf5a1a662fec81ffe8a9ebc2e6eefb15b2980874.js ファイルからの 2 つ目のエラー
Uncaught DOMException: Failed to execute 'postMessage' on 'Window': Invalid target origin '' in a call to 'postMessage'.
at u (https://forum.MYDOMAINNAME.com/assets/embed-application-08a52625979d3d44aac8a2dedf5a1a662fec81ffe8a9ebc2e6eefb15b2980874.js:1:105)
at window.onload (https://forum.MYDOMAINNAME.com/assets/embed-application-08a52625979d3d44aac8a2dedf5a1a662fec81ffe8a9ebc2e6eefb15b2980874.js:1:523)
この 2 つのエラーから、ブラウザがサーバーからアセットを見つけられないことが問題の原因だと考えています。
これは、私の設定が以下のようになっているためかもしれません。
- メインアプリケーションは AWS EC2 でホストされています。すべての静的ファイル/アセットは AWS S3 フォルダ内に保存され、AWS CloudFront を介してアプリから取得されます。
- Discourse は、別の EC2 インスタンスに Docker イメージを使用してインストールされています。
- AWS Route 53 を使用して、
forum.MYDOMAINNAME.comを Discourse EC2 インスタンスの IP アドレスにリダイレクトするAレコードを追加しました。
メインアプリ内に HTML と JS スクリプトを埋め込んでいます。コードがアセットを呼び出す際、メインアプリ(別の EC2 インスタンス内)に Discourse のアセットファイルが含まれていないため、エラーが発生しています。
私の仮定が正しい場合、これをどのように修正すべきでしょうか?Discourse のアセットを S3 に保存し、CloudFront で配信することは可能でしょうか?
私の仮定が間違っている場合、これらのエラーの意味と、それをどのように修正できるのでしょうか?
ありがとうございます!