大家好,
当我尝试通过 JavaScript 嵌入 Discourse 评论时,浏览器控制台显示了以下错误:
来自 comments 文件第 1 行的第一个错误
Failed to load resource: the server responded with a status of 400 ()
来自 embed-application-08a52625979d3d44aac8a2dedf5a1a662fec81ffe8a9ebc2e6eefb15b2980874.js 文件的第二个错误
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)
根据这两个错误,我认为问题在于浏览器无法从服务器加载资源。
这可能与我的配置有关:
- 我的主应用程序托管在 AWS EC2 上。所有静态/资源文件都存储在 AWS S3 文件夹中,并通过 AWS CloudFront 由我的应用获取。
- Discourse 安装在一台不同的 EC2 实例上,使用的是 Docker 镜像。
- 我使用 AWS Route 53 添加了一条
A记录,将forum.MYDOMAINNAME.com重定向到 Discourse EC2 实例的 IP 地址。
我在主应用中嵌入了 HTML 和 JS 脚本。当代码请求资源时,由于我的主应用(位于另一台 EC2 实例上)不包含 Discourse 的资源文件,因此出现了错误。
如果我的假设正确,我该如何解决这个问题?如何将 Discourse 的资源文件存储在 S3 中,并通过 CloudFront 提供?
如果我的假设错误,这些错误具体是什么意思?我又该如何修复它们?
谢谢!