内容安全策略:页面的设置已阻止加载资源(“script-src”)

您好,我通过 Docker 设置了 discourse,但标题中提到的错误仅出现。

您使用了哪种安装方法,除了核心安装过程本身之外,还配置了什么?

1 个赞

我曾经单独设置过图像,也通过 docker-compose 设置过!但是,错误仍然存在!

我还能在哪些方面进行其他配置?

恐怕这点信息不足以让人提供建议。您是否遵循了标准的安装指南?

如果您能提供一些关于您的设置的详细信息,您是如何安装 Discourse 的,以及您可能做的任何其他事情,人们或许能给您一些见解。 :+1:

2 个赞

如果你使用了 docker-compose,那么这不是标准安装。你可能使用了 bitnami(这里不支持)?如果你能进入 admin/settings,你也许可以在设置中搜索“content security”来添加任何内容,无论它试图指向什么。

为什么将其强制用于端口 80 和 443?

@pfaffman

我能更改这个吗?

我不知道。你显然没有标准安装,也没有解释你是如何安装的。

我不知道是什么在端口 80 和 443 上强制运行什么。

如果你想要好的帮助,你应该使用标准安装。如果你想要任何帮助,你需要多说一些关于你是如何安装的。

嗯,我使用的是标准安装,它强制使用端口 80 和 443。

所以你没有使用 docker-compose?

是的,标准安装需要端口 80 和 443,并开启 https 和 force_https。如果你进行了标准安装,就不应该遇到你描述的问题。

你运行 discourse-setup 进行安装了吗?

问题是,我想在其他端口上运行 discourse 并通过反向代理将其包含在我的 Apache2 中……

也许如果你说你是如何安装的,其他人就能帮助你。也许你想要在已有 Apache 站点的服务器上设置 Discourse

我已经说过了!关于标准安装!!!

当然可以。您应该在 app.yml 中公开,例如 - "83:80",或者您的反向代理用于将流量发送到后端的任何端口。或者您可以使用 websocket。

您想使用非标准安装的反向代理。

我已经这样做了,但网站仍然无法访问。

那么您的设置是错误的。问题几乎不可能猜测。不要使用 CSP,那将是第一步。但是 Apache2 和 Discourse 都在同一台服务器上吗?您的 Apache2 配置正确吗?等等,等等。

再说一遍,正如所说——您没有使用标准安装。

我无法使用标准安装!抱歉,这有什么难理解的?我已经运行了 Apache2,而且我不明白为什么 Discourse 认为它不够灵活,不能使用其他端口,就要关闭它。

这就是整个问题的所在

我的 Apache2 配置:

<VirtualHost *:80>
    ServerName <domain>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName <domain>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine On
    SSLCertificateFile    /etc/letsencrypt/live/<domain>/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/<domain>/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/<domain>/fullchain.pem

    ProxyPass / http://127.0.0.1:90/
    ProxyPassReverse / http://127.0.0.1:90/
</VirtualHost>

app.yml:

expose:
  - "90:80"   # http
  - "100:443" # https

也许不像理解你只能从团队那里获得标准安装的支持那么难。这就是为什么你必须希望我们中的一员,普通的成员,能够帮助你。

而且因为你什么都不说,所以这是一项艰巨的任务。我们无法猜测你的配置是否正确,或者你是否在 app.yml 中指向了正确的端口。我们对你的设置一无所知。

当然可以。在 Discourse 前面使用反向代理是相当容易的——无论如何,在 Docker 之外。你只需要暴露正确的端口,或者使用 websocket,如果这两个在同一台服务器上。

你做过吗?我不知道,我的牌也没有告诉我 :wink:

还有,如果 CSP 是个问题,就不要使用它,直到你弄清楚是什么在对抗。

1 个赞